В OpenGL можно установить режим индексированного цвета вместо RGBA-режима. Но этот режим не поддерживается вершинными тендерами. Это означает, что, если буфер кадров использует индексирование цвета, поведение вершинного шейдера при попытке использования не определено.

Программируемая часть операций OpenGL

4.1.1. Атрибуты вершины

Приложения, рисующие изображения с помощью OpenGL, должны задавать атрибуты для каждой вершины примитива - нормаль, цвет, координаты текстуры и др. Атрибуты задают для каждой вершины отдельно с помощью функций gl Normal, gl Col or и gl TexCoord. Если использовать эти функции, задаваемые атрибуты на время станут частью состояния OpenGL.

Изображения можно рисовать также с помощью массивов вершин. Использующее этот метод приложение должно поместить атрибуты вершин в отдельные массивы координат, нормалей, цвета, текстурных координат и т. п. Вызвав функцию gl DrawArrays, можно затем установить эти атрибуты вершин для OpenGL за один вызов функции. Буферные объекты вершин (вместилище атрибутов вершин в OpenGL) появились в OpenGL версии 1.5 для повышения производительности.

Атрибуты вершин бывают стандартные и произвольные. Стандартные атрибуты - те, что предусмотрены OpenGL: первичный и вторичный цвет, нормаль, координаты вершины, координаты текстуры, координаты дымки.

Некоторые атрибуты вершинному шейдеру недоступны, например атрибут индекса, который используется для установки индекса цвета, и флаг видимости грани. Тем не менее приложение может устанавливать флаг видимости грани в OpenGL, используя вершинный шейдер.

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

//

// Атрибуты вершин //

attribute vec4 gl_Color; attribute vec4 gl_SecondaryColor: attribute vec3 gljtormal : attribute vec4 glj/ertex: attribute vec4 gl_MultiTexCoordO: attribute vec4 gl_MultiTexCoordl: attribute vec4 gl_Mu"ltiTexCobrd2:

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