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

UptoLike

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

25
glEndList();
// Вызов списка 3
glCallList(3);
Для выполнения сразу нескольких готовых списков используется команда:
void glCallList (GLsizei n,
GLenum type,
Const GLvoid *lists)
где n – количество исполняемых списков, listsуказатель на массив, содержащий список имен спи-
сков изображений, которые необходимо исполнить, type тип значений в списке имен lists и может
принимать следующие символьные константы:
Константа
Тип значений в списке имен изобра-
жений
GL_BYTE ПАРАМЕТР LISTS ЯВЛЯЕТСЯ
УКАЗАТЕЛЕМ НА МАССИВ С
БАЙТОВЫМИ ЭЛЕМЕНТАМИ,
ПРИНИМАЮЩИМИ ЗНАЧЕНИЯ
В ДИАПАЗОНЕ [−128, 127]
GL_UNSIGNED_BY
TE
Параметр lists является указателем на
массив с положительными байтовы-
ми элементами, принимающими зна-
чения в диапазоне [0, 255]
GL_SHORT
Параметр lists является указателем на
массив с двухбайтовыми элементами,
принимающими значения в диапазо-
не [−32768, 32767]
GL_UNSIGNED_SH
ORT
Параметр lists является указателем на
массив с положительными двухбай-
товыми элементами, принимающими
значения в диапазоне [0, 65535]
GL_INT
Параметр lists является указателем на
массив с четырехбайтовыми целыми
элементами
и т.д. (см. MSDN)
Перед вызовом команды glCallLists можно задать постоянное смещение к каждому имени списка
изображения из массива lists. Это выполняется командой
void glListBase (GLuint base)
где base – целочисленное смещение. По умолчанию это смещение равно нлю.
Как уже было показано в примере, команды glCallList и glCallLists могут быть вложены в другие
списки изображений. Уровней вложения не может быть больше 64.
При работе со списками, особенно при формировании шрифтов, приходится следить за номерами
создаваемых списков, что не всегда удобно. Эту проблему легко разрешает функция glGenList, генери-
рующая непрерывный набор пустых дисплейных списков. Рассмотрим формат записи этой команды.
GLuint glGenList (GLsizei range)
Параметр range определяет количество пустых дисплейных списков, которые необходимо сгенери-
ровать. Функция glGenList возвращает целое число n, которое является именем первого дисплейного
списка. Если range больше 1, то также будут созданы пустые дисплейные списки с именами n+1, n+2,
, n+range−1. При нулевом значении range функция glGenList вернет значение 0 и никакой дисплей-
ный список не создастся.
В ходе выполнения программы можно удалять непрерывную группу имен списков изображений.
Допустим, имеется группа имен, например: 1, 3, 4, 5, 6, 8, 9, 10. Мы можем удалить из этой группы лю-
бую непрерывную последовательность имен списков, например, 4, 5 и 6. Для этого необходимо вос-
пользоваться специальной командой