Die gebräuchlichen Namen für die Komponenten der Texturkoordinaten sind U und V. Da jedoch der nächste verwendete Buchstabe (für 3D-Texturen) W ist, entsteht ein Konflikt mit den Namen für die Komponenten einer Position : X, Y, Z und W .
Um solche Konflikte zu vermeiden, lautet die OpenGL-Konvention, dass die Komponenten der Texturkoordinaten S, T und R heißen. Sie haben also Funktionsaufrufe wie diesen:
glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);
Wobei GL_TEXTURE_WRAP_S
sich auf das Einschließen der S-Komponente der Texturkoordinate bezieht.
Leider wählte OpenGL S, T und R lange bevor GLSL- und Swizzle-Masken auftauchten . R steht natürlich in Konflikt mit R , G, B und A. Um solche Konflikte zu vermeiden, verwendet die Texturkoordinaten-Swizzle-Maske in GLSL S, T, P und Q.
In GLSL können Sie mit XYZW, STPQ oder RGBA arbeiten. Sie bedeuten alle genau dasselbe. So position.st
ist genau das gleiche wie position.xy
. Es ist jedoch nicht erlaubt, Swizzle-Masken aus verschiedenen Sets zu kombinieren. Ist position.xt
also nicht erlaubt.