“ st” หมายถึงอะไรในบริบทของ OpenGL?


19

ฉันเคยเห็นคำนี้stมาสองสามครั้งเมื่อมองไปที่ชิ้นส่วน OpenGL อื่น ๆ อย่างไรก็ตามฉันไม่รู้ว่ามันหมายถึงอะไรหรือใช้เพื่ออะไร นี่คือตัวอย่าง:

uniform vec2 u_resolution;

vec2 st = gl_FragCoord.xy/u_resolution;

ฉันสามารถเข้าใจได้ว่านี่เป็นการแปลงพิกัดพิกเซลเป็นพิกัดปกติที่ 0.0 - 1.0 แทนที่จะเป็น 640 x 480 (ตัวอย่าง)

position.stผมเคยเห็นยังสิ่งที่ต้องการ

มันหมายความว่าอะไร?

คำตอบ:


24

ชื่อสามัญสำหรับส่วนประกอบของพิกัดพื้นผิวคือ U และ V อย่างไรก็ตามเนื่องจากตัวอักษรถัดไปที่ใช้ (สำหรับพื้นผิว 3 มิติ) คือ W ที่ทำให้เกิดความขัดแย้งกับชื่อสำหรับส่วนประกอบของตำแหน่ง : X, Y, Z และ .

เพื่อหลีกเลี่ยงความขัดแย้งดังกล่าวการประชุมของ OpenGL คือส่วนประกอบของพิกัดพื้นผิวมีชื่อว่า S, T และ R ดังนั้นคุณจึงมีการเรียกใช้ฟังก์ชันดังนี้:

glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);

โดยGL_TEXTURE_WRAP_Sอ้างถึงการตัดในองค์ประกอบ S ของพิกัดพื้นผิว

น่าเสียดายที่ OpenGL เลือก S, T และ R นานก่อนที่ GLSL และswizzle mask จะเข้ามา R แน่นอนขัดแย้งกับR , G, B และ A เพื่อหลีกเลี่ยงความขัดแย้งดังกล่าวใน GLSL, หน้ากากพื้นผิวประสานงาน swizzle ใช้ S, T, Pและ Q

ใน GLSL คุณสามารถ swizzle ด้วย XYZW, STPQ หรือ RGBA พวกเขาทั้งหมดหมายถึงสิ่งเดียวกัน ดังนั้นposition.stเหมือนกันposition.xyทุกประการ อย่างไรก็ตามคุณไม่ได้รับอนุญาตให้รวมมาสก์ Swizzle จากชุดที่แตกต่างกัน ดังนั้นจึงposition.xtไม่ได้รับอนุญาต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.