“St” OpenGL bağlamında ne anlama geliyor?


20

stDiğer OpenGL parçalı gölgeleyicilere bakarken bu terimin birkaç kez ortaya çıktığını gördüm . Ancak, bunun ne anlama geldiğini veya ne için kullanıldığını bilmiyorum. İşte bir örnek:

uniform vec2 u_resolution;

vec2 st = gl_FragCoord.xy/u_resolution;

Bunun piksel koordinatlarını 640 x 480 yerine 0.0 - 1.0 normal koordinatlarına dönüştürdüğünü anlayabilirim (örneğin).

Ben de böyle şeyler gördüm position.st.

Bu ne demek?

Yanıtlar:


25

Doku koordinatlarının bileşenleri için ortak adlar U ve V'dir. Ancak, kullanılan bir sonraki harf (3B dokular için) W olduğundan, bir konumun bileşenlerinin adlarıyla çakışmaya neden olur : X, Y, Z ve W .

Bu tür çatışmaları önlemek için, OpenGL'nin kuralı, doku koordinatlarının bileşenlerinin S, T ve R olarak adlandırılmasıdır. Böylece, şöyle işlev çağrılarınız vardır:

glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);

Burada GL_TEXTURE_WRAP_Sdoku koordinatının S bileşenindeki kaydırmayı ifade eder.

Ne yazık ki, OpenGL, GLSL ve swizzle maskeleri gelmeden çok önce S, T ve R'yi seçti . R, elbette, R , G, B ve A ile çatışır. Bu tür çatışmaları önlemek için GLSL'de doku koordinat swizzle maskesi S, T, P ve Q kullanır.

GLSL'de XYZW, STPQ veya RGBA ile geçiş yapabilirsiniz. Hepsi aynı şey demek. Yani position.sttam olarak aynı position.xy. Ancak, farklı setlerden swizzle maskelerini birleştirmenize izin verilmiyor. Buna position.xtizin verilmiyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.