Що означає "st" у контексті OpenGL?


20

Я stкілька разів бачив цей термін, коли дивився на інші шрифти для фрагментів OpenGL. Однак я не знаю, для чого це означає або для чого він використовується. Ось приклад:

uniform vec2 u_resolution;

vec2 st = gl_FragCoord.xy/u_resolution;

Я можу зрозуміти, що це перетворення координат пікселів у нормалізовані координати 0,0 - 1,0 замість 640 х 480 (наприклад).

Я також бачив такі речі position.st.

Що це означає?

Відповіді:


25

Загальні назви компонентів координат текстури - це 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 і маски свистуля . R, звичайно, конфліктує з R , G, B і A. Щоб уникнути подібних конфліктів, у GLSL маска перемикання текстури координат текстури використовує S, T, P і Q.

У програмі GLSL ви можете ширити за допомогою XYZW, STPQ або RGBA. Всі вони означають абсолютно те саме. Так що position.stточно так само, як position.xy. Однак вам не дозволяється поєднувати маски для викрутки з різних наборів. Так position.xtне дозволено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.