Каждому дисплейному списку соответствует некоторое целое число, идентифицирующее этот список.
Узнать, занят ли данный номер каким-либо дисплейным списком, можно при помощи функции
GLboolean gllsList ( GLuint list );
Зарезервировать range свободных подряд идущих номеров для идентификации дисплейных списков можно при помощи функции
GLuint glGenLists ( GLsizei range ) ,-
Эта функция возвращает первый свободный номер из блока зарезервированных номеровданной командой.
Для того чтобы выделить последовательность команд в дисплейный список, служат процедуры glNewList и glEndList. Все команды, находящиеся между этими двумя, автоматически помещаются в соответствующий дисплейный список.
void glNewList ( GLuint list, GLenum mode );
Здесь list - уникальное положительное число, служащее идентификатором списка, а параметр mode принимает одно из двух значений -
Основы библиотеки OpenGL
GL_COMPILE или GL_COMPILE_AND_EXECUTE. Первое из этих значений обеспечивает только запоминание (компиляцию) дисплейного списка, в то время как второе - запоминание и выполнение этого списка.
Не все команды OpenGL могут быть записаны в Дисплейный список. Ниже приводится список команд, которые не могут быть помещены в дисплейный список.
glDeleteLists О gllsEnabled ()
glFeedbackBuffer О gllsList ()
glFinish () glPixelStore ()
glGeriLists () glRenderMode ()
glGet* () glSelectBuffer ()
Для того чтобы вызвать (выполнить) дисплейный список, служит процедура
void glCallList ( GLuint list );
Возможно построение иерархических дисплейных списков, когда внутри определения одного списка вызываются другие списки. Для уничтожения дисплейных списков служит процедура
void glDeleteLists ( GLuint list, GLsizei range ) ;
Замечание. Дисплейные списки нельзя изменять. Список можно уничтожить или создать заново. В дисплейном списке команды запоминаются вместе со своими аргументами на момент передачи, так что в следующем примере последний оператор присваивания дисплейный список не изменяет.
GLfloat color [] ={0.0, 0.0, 0.0 };