Общими именами для компонентов текстурных координат являются U и V. Однако, поскольку следующая используемая буква (для 3D-текстур) - W, это вызывает конфликт с именами для компонентов позиции : X, Y, Z и W .
Чтобы избежать таких конфликтов, соглашение OpenGL состоит в том, что компоненты текстурных координат называются S, T и R. Таким образом, у вас есть вызовы функций, подобные этим:
glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);
Где GL_TEXTURE_WRAP_S
относится к переносу в компонент S координаты текстуры.
К сожалению, OpenGL выбрал S, T и R задолго до появления маски GLSL и Swizzle . R, конечно, конфликтует с R , G, B и A. Чтобы избежать таких конфликтов, в GLSL в текстовой координатной маске текстуры используются S, T, P и Q.
В GLSL вы можете использовать XYZW, STPQ или RGBA. Все они означают одно и то же. Так position.st
точно так же, как position.xy
. Тем не менее, вам не разрешено комбинировать маски из разных наборов. Так position.xt
что не допускается.