gl_Color
означает разные вещи в разных местах.
В вершинном шейдере gl_Color
представляет основной цветовой атрибут для каждой вершины, передаваемый пользователем. Это устанавливается с помощью glColor*
вызовов или данных массива, извлеченных с помощью glColorPointer
.
В фрагментном шейдере gl_Color
представляет интерполированный цвет для рендеринга треугольника. Помните, что у треугольников есть передняя и задняя части. Если вы включите выборку лиц, то все лица одного или другого вида (или обоих) не отображаются. Однако, если вы отключите выборку лица, то будут отображены обе стороны.
Часто бывает полезно иметь разные выходные значения для каждой вершины в зависимости от конкретной поверхности треугольника. Основной цвет имеет фронтальный цвет и задний цвет, представляющий цвет для треугольников, обращенных вперед, и треугольников, обращенных назад. Вершинными шейдерами для них являются gl_FrontColor
и gl_BackColor
.
Если вы выполняете двусторонний рендеринг, вам нужно будет установить оба эти значения, чтобы входные данные фрагмента шейдера gl_Color
имели какое-либо значение. Если вы выполняете только рендеринг с лицевой стороны, вам нужно установить gl_FrontColor
.