Определение языка

В приведенном примере после компиляции в программе будет находиться вектор размером 8 элементов. Окончательный размер массива определяется указанием максимального индекса.

Эти возможности особенно полезны для работы со встроенными массивами текстурных координат. Внутри OpenGL массив объявлен без указания индекса: varying vec4 g1_TexCoord[]: Если программа указывает только константы 0 и 1, которые определяются во время компиляции, массиву будет неявно присвоен размер 2 элемента: gl_TexCoord[2]. Если же шейдер для обращения к массиву использует неконстантные переменные, он должен объявить массив явно и указать нужный размер. Желательно объявлять массив не больший, чем это необходимо, так как размер аппаратных ресурсов здесь ограничен.

Если несколько шейдеров совместно используют один массив, он может оказаться объявленным разного размера. В этом случае компоновщик сделает размер массива соответствующим максимальному объявлению.

3.2.7. Void

Тип void традиционно используется для объявления того, что функция не возвращает никакого значения. В данном примере функция main ничего не возвращает и объявлена как тип void:

void mainO
{

Г

Для других целей этот тип не используется.

3.2.8. Объявления и область видимости Объявления переменных в языке шейдеров OpenGL такие же, как в С++. Переменные могут быть объявлены по необходимости, а не в начале блока и имеют такую же область видимости, например:

float f; f = 3.0: vec4 u. v;
for (int i - 0: i < 10: ++i) v = f * u + v:

Область видимости переменной, объявленной в операторе for, заканчивается в конце тела цикла. Переменные нельзя объявлять в операторе i f, что упрощает реализацию определения области действия в операторе eisen делает ее лишь чуть менее удобной.

Как и в С, в именах переменных учитывается регистр, они должны начинаться с буквы или подчеркивания, а содержать могут только буквы, цифры и подчеркивания. Определенные разработчиком переменные не могут начинаться с gl_, так как все эти имена являются зарезервированными, как и имена, в которых встречаются несколько подчеркиваний подряд (_).


⇐ Предыдущая| |Следующая ⇒