OpenGL. Компьютерная графика. Васильев С.А. - 22 стр.

UptoLike

Составители: 

24
GL_COMPILE СПИСОК КОМАНД ТОЛЬ-
КО КОМПИЛИРУЕТСЯ
(НАКАПЛИВАЕТСЯ) ДЛЯ
ВОЗМОЖНОГО ПОСЛЕ-
ДУЮЩЕГО ИСПОЛЬЗО-
ВАНИЯ
GL_COMPILE_AND_EXEC
U
TE
Команды исполняются и толь-
ко потом заносятся в список
OpenGL компилирует список изображений только один раз, после этого он готов к применению.
Поэтому мы получаем увеличение скорости при использовании списков изображений.
Порядок, в котором команды располагаются в списке изображений, жестко определяют порядок, в
котором они будут выполняться.
Вызов списка изображений осуществляется командой:
void glCallList (GLuint list)
Параметр list задает целочисленное имя списка изображений.
Рассмотрим пример подготовки и вызова списка изображений.
// Открываем список изображений (без выполнения) под номером 2
glNewList(2,GL_COMPILE);
glColor3f(1.0f, 0.0f,0.0f); // Задаем цвет создаваемого примитива
glBegin(GL_POLYGON); // Задаем сам примитив
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f(–1.0f, 1.0f, 0.0f);
glVertex3f(–1.0f, –1.0f, 0.0f);
glVertex3f( 1.0f, –1.0f, 0.0f);
glEnd();
glEndList(); // Закрываем список изображений под номером 2
glCallList(2);
В список можно включать вызовы уже готовых списков изображений. Рассмотрим список из двух
вызовов готовых списков 1 и 2:
// Открываем список изображений (без выполнения) под номером 1
glNewList(1,GL_COMPILE);
glColor3f(0.0f, 1.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 1.0f, 2.0f, 0.0f);
glVertex3f(–1.0f, 2.0f, 0.0f);
glVertex3f(–1.0f, –2.0f, 0.0f);
glEnd();
glEndList();
// Открываем список изображений (без выполнения) под номером 2
glNewList(2,GL_COMPILE);
glColor3f(1.0f, 0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f(–1.0f, –1.0f, 0.0f);
glVertex3f(1.0f, –1.0f, 0.0f);
glEnd();
glEndList();
// Открываем список изображений (без выполнения) под номером 3
glNewList(3,GL_COMPILE);
glCallList(1);
glCallList(2);