Концептуально список отображения - это просто набор команд, которые выполняются при glCallList
. Поэтому, что бы оно ни содержало, все будет так, как если бы вы использовали эти команды напрямую (но , возможно, более производительный). Так что, если ваш список отображения содержит кучу команд геометрии, как вы можете их раскрасить? Да, вы догадались, используя обычную команду glColor
прямо перед вызовом списка:
glColor(...);
glCallList(...);
Если вы хотите, чтобы ваши объекты имели текстуру и при этом были окрашены, вы можете просто установить текстуру среды на GL_MODULATE
(я полагаю, вы не используете шейдеры, в противном случае весь вопрос будет совсем устаревшим). Если вы хотите, чтобы ваши объекты горели, ну, конечно, измените glColor
на glMaterial
.
Но если вы установите цвет в списке отображения, у вас не будет возможности его получить и изменить. Но я бы не советовал вам использовать списки отображения. Если вы используете их для хранения геометрии и уменьшения количества копий CPU-GPU и накладных расходов на извлечение вызовов, то почему бы не использовать VBO , которые созданы именно для этого (и не страдают от такой неопределенной реализации).