glDrawElements с постоянной нормалью

Мне было просто любопытно, можете ли вы указать постоянную нормаль при рисовании с помощью одного вызова DrawElements. Я использую VAO и VBO, так что это не проблема, потому что я загружаю их один раз для всех вершин и просто сохраняю идентификатор VBO, но я мог бы освободить немного памяти на графической карте.

вот как вам нужно загружать данные в графику:

glBindBuffer(GL_ARRAY_BUFFER,VBO[Grid][Normals]);
glNormalPointer(GL_FLOAT, sizeof(vector3f), 0);
glEnableClientState(GL_NORMAL_ARRAY);

Поскольку я задаю некоторую сетку 5x5x5, а затем использую индексы для создания кубической поверхности, с нормалями не так много, и использование некоторой константы может помочь :)


person Raven    schedule 08.01.2011    source источник
comment
На какое оборудование вы ориентируетесь? Есть ли причина не использовать вершинный шейдер, который получает нормаль как юниформ-ввод (или имеет жестко запрограммированный нормаль)?   -  person Grizzly    schedule 08.01.2011
comment
Всегда указывайте целевую версию OpenGL.   -  person Kos    schedule 08.01.2011


Ответы (1)


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

person Luca    schedule 08.01.2011
comment
Да, так и должно быть. Сейчас я использую фиксированный конвейер, потому что я еще не на той стадии, когда мне нужно использовать шейдеры, но, может быть, будет проще просто бросить туда этот код для загрузки шейдеров и создать простой шейдер... - person Raven; 08.01.2011
comment
Да, нужно немного потрудиться, прежде чем начинать с шейдеров, но они позволяют реализовать лучший алгоритм без обходных путей, потому что реализация фиксированного конвейера. - person Luca; 09.01.2011
comment
Даже без необходимости обходить ограничения фиксированного конвейера, как только вы начнете использовать несколько функций фиксированного конвейера вместе, с шейдерами, вероятно, станет проще. - person Grizzly; 10.01.2011