GLuint index = 0;
glBindAttribLocation(mprogram, index, name);
Например, индекс «0» - это gl_position, но как насчет других индексов, таких как 1 и 2?GLSL 1.2: Каковы атрибуты по умолчанию для разных индексов, используемых в glBindAttribLocation
@Nicolas Проблема в том, что, когда я установил индекс к нулю, я заметил, что призывы к glVertexAttrib (индекс ...) будет изменять позиции вершин вместо атрибута я присвоенного его ...
Но я думал, что это указано, что общий атрибут 0 действительно сглажен со встроенной вершинной позицией (по крайней мере, в старые неисчерпаемые дни). Ну, по крайней мере, в «Оранжевой книге» сказано об этом, и я так и считал. –
@ChristianRau: Вы можете получить это в замешательстве с необходимостью использовать либо атрибут 0, либо 'gl_Vertex' при рендеринге (в соответствии с правилами совместимости). Они оба служат для «провокации» вершины под 'glBegin/glEnd', поэтому вы должны иметь что-то в одном из них, и вы не можете использовать оба для одного вызова рендеринга. Но если это то, что он говорит, то Оранжевая книга ошибочна. Из спецификации совместимости OpenGL 3.3: «Нельзя использовать общие атрибуты с обычными». Исключением не является исключение для gl_Vertex и атрибута 0. –
Посмотрел. 2.1-spec говорит (в главе 2.7): * «Установка атрибута нулевого атрибута вершины указывает вершину, четыре координаты вершин берутся из значений атрибута 0. Команда Vertex2, Vertex3 или Vertex4 полностью эквивалентна соответствующей VertexAttrib команда с индексом 0. Установка любого другого общего атрибута вершин обновляет текущие значения атрибута. Нет текущих значений для нулевого атрибута вершины. "* Чтобы быть *" полностью эквивалентным "*, ему не нужно отправлять значения к тому же каналу атрибутов? –