Части одного рисунка называют по-разному. В некоторых графических пакетах они называются структурами, тогда как в других пакетах их называют сегментами или объектами. К тому же, допустимые операции с этими частями сильно отличаются при переходе от одного пакета к другому. В пакетах для моделирования, например, предоставляется широкий выбор операций, которые можно использовать для описания элементов рисунка и выполнения различных действий над ними. С другой стороны, в любой графической библиотеке всегда можно структурировать объект и работать с элементами рисунка с помощью процедурных элементов, существующих в таких языках высокого уровня, как С+Ь
ТАБЛИЦЫ ОТОБРАЖЕНИЙ В OpenGL
Иногда удобнее или эффективнее хранить описание объекта (или любой другой набор команд OpenGL) в виде именованной последовательности операторов. В OpenGL это можно сделать с помощью структуры, которая называется таблицей отображений. Один раз создав таблицу отображений, к ней можно обращаться множество раз при выполнении различных операций, связанных с созданием изображений. В сети таблица отображений, описывающая сцену, хранится на машине-сервере, поэтому не нужно передавать команды из этой таблицы каждый раз, когда следует показать данную сцену. Кроме того, команды записанные в таблице отображений, можно сохранить и выполнить либо позже, либо немедленно. Таблицы отображений особенно удобны для иерархического моделирования, где сложный объект можно описать как набор простых составляющих.
СОЗДАНИЕ И НАИМЕНОВАНИЕ ТАБЛИЦ ОТОБРАЖЕНИЙ В OpenGL Чтобы создать таблицу отображений, необходимо заключить набор команд OpenGL в скобки из пары функций glNewList/glEndList. Например, так.
glNewList (listID, listMode);
glEndList ( ); Такая структура образует таблицу отображений, для которой параметру listID, обозначающему имя таблицы, присваивается положительное целое значение. Параметру listMode присваивается значение символьной константы OpenGL (либо GL_COMPILE, либо GL_COMPILE_AND_EXECUTE). Если требуется сохранить таблицу для ее дальнейшего выполнения, используется команда GL_COMPILE. В противном случае команды выполняются сразу же, как попадают в таблицу, кроме того, позже можно повторно выполнить этот же набор команд.
После создания таблицы отображений находятся значения выражений, которые содержат такие параметры, как координаты и коды цвета, чтобы в таблице хранились только значения параметров. Любые последующие изменения этих параметров не оказывают влияния на таблицу. Поскольку значения таблицы отображения нельзя изменить, в нее нельзя включать такие команды OpenGL, как указатели на список вершин.
Можно создать любое количество таблиц отображений, при этом для выполнения набора команд вызывается идентификатор таблицы. Более того, одна таблица отображения может находиться внутри другой. Однако если таблице присваивается идентификатор, который уже задействован, то новая таблица заменит старую, у которой было такое же имя. Поэтому, чтобы какая-то таблица не потерялась из-за случайного повторения ее идентификатора, можно поручить пакету OpenGL самостоятельно присваивать имена таблицам.