OpenGL, чередующийся VBO (вершинный, нормальный и цветной) со светом

У меня есть чередующийся VBO, содержащий вершины, нормали и цвета. Все работает как полагается.

Я также хочу иметь свет, но если я включу его, цвета больше не будут работать.

Я предполагаю, что это связано с тем, что освещение работает не с gl.glColor, а с цветными материалами (как и здесь указано, первый вопрос)

Итак, принимая во внимание, что мне нужно отрендерить не более 10000 треугольников и мне нужно 3 раза сменить цвет во время рендеринга, какая стратегия лучше всего соответствует моим потребностям?

Ps: я также визуализирую несколько миллионов треугольников с другими VBO (но только с цветом для каждого VBO), поэтому я думаю, что gl.glBegin не представляет для меня допустимый вариант.


person elect    schedule 04.10.2012    source источник


Ответы (1)


Если ваше оборудование не поддерживает шейдеры, вы можете использовать glColorMaterial(GL_FRONT, GL_DIFFUSE) и glEnable(GL_COLOR_MATERIAL).

person keltar    schedule 04.10.2012
comment
Пробовал, вроде работает, хотя цвета кажутся очень темными, особенно белый. Как насчет шейдеров? Как я мог с ними поступить? (У вас есть хорошая ссылка?) - person elect; 04.10.2012
comment
nehe.gamedev.net/article/glsl_an_introduction/25007 что-то в этом роде. Shader — это просто программа для GPU, в ней вы можете вычислять результирующие цвета как хотите. Однако в вашей ситуации я думаю, что свет рассчитывается нормально, а ваши цветовые дефекты являются результатом неправильной настройки источника света. Еще раз проверьте свойства света. Кроме того, вы можете добавить окружающий свет, чтобы сделать все ярче — я думаю, это должно сработать, вызвав glMaterialf для GL_AMBIENT_COLOR. - person keltar; 04.10.2012