Если включено произвольное отсечение, оно выполняется внутри OpenGL после выполнения вершинного шейдера. Чтобы отсечение правильно работало совместно с вершинным шейдером, шейдер должен вычислить еще и координаты вершины относительно определенных произвольных плоскостей отсечения, а затем записать результат вычисления в переменную gl_Cl i pVertex. Приложение должно самостоятельно контролировать, записываются ли эти значения шейдером и определены ли все плоскости отсечения в одной и той же системе координат. Произвольное отсечение такими определенными плоскостями работает только при линейном преобразовании. Более подробное описание gl Cl i pVertex приведено в разделе4.5.3.

Каждая из этих переменных находится в глобальной области видимости, она доступна для записи в любой момент выполнения вершинного шейдера. Из них можно читать значения, которые были ранее в них записаны, но нельзя читать значение из неинициализированной переменной, так как это вызовет неопределенное поведение. Только последнее записанное значение используется для последующих операций.

Обращаться к этим переменным можно только из вершинного шейдера, определены они таким образом:

vec4 gl_Position; // сюда должно быть записано значение float gl_PointSize: // сюда может быть записано значение vec4 q1_ClipVertex: // сюда может быть записано значение

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

Язык шейдеров OpenGL определяет несколько встроенных varying-перемен-ных. Среди них есть такие, что доступны для записи вершинному шейдеру, но не видимы фрагментному шейдеру, а также такие, что доступны для чтения фраг-ментному шейдеру, но не известны вершинному шейдеру.


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