2011-01-08 3 views
2

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

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

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

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

+2

Какое оборудование вы используете для таргетинга? Любая причина не использовать вершинный шейдер, который получает нормальный как равномерный вход (или имеет нормальный жесткий код)? – Grizzly

+0

Всегда указывайте целевую версию OpenGL. – Kos

ответ

2

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

+0

Да, я должен использовать фиксированный конвейер, потому что я еще не в стадии, где мне нужно использовать шейдеры, но, возможно, будет проще просто бросить этот код для загрузки шейдеров там и создать простой шейдер ... – Raven

+1

Да , перед началом работы с шейдерами стоит немного усилий, но они позволяют вам реализовать лучший алгоритм, не работая вокруг, поскольку фиксированная реализация конвейера. – Luca

+0

Даже без необходимости работать с ограничениями на фиксированный конвейер, как только вы начнете использовать несколько функций фиксированного конвейера вместе, возможно облегчить работу с шейдерами. – Grizzly