В OpenGL можно обрабатывать кривые и поверхности с помощью вычислителей. Вычислители используют полиномиальное отображение для определения параметров вершины: цвета, нормали и координат, - которые точно таким же образом интерпретируются в дальнейшей обработке, как будто они были заданы обычным способом. За подробностями об этой функциональности следует обратиться к спецификации OpenGL.

1.7.2. Операции обработки вершин

Конечный результат использования любого из рассмотренных методов рисования примитивов - передача данных о примитивах на первый этап их обработки в OpenGL, обработку вершин (см. рис. 1.1, 2). Здесь координаты вершин преобразуются по видовым матрицам и матрицам проекции, нормали преобразуются обратным транспонированием левой верхней части матрицы модели-вида размером 3x3, текстурные координаты преобразуются с помощью текстурных матриц, накладываются вычисления освещения, из-за чего меняется основной цвет; текстурные координаты могут быть вычислены автоматически, наложены свойства материала и вычислены размеры точек. Все это строго определено в стандарте. Операции выполняются в определенном порядке по определенным формулам, контролируемым определенными параметрами состояния OpenGL.

Иногда этап обработки вершин называют преобразование и освещение, или T&L (Transformation and Lighting), так как в данный момент названные операции самые значимые. Приложение может контролировать этот этап только через изменение параметров состояния OpenGL (например, включить или выключить освещение функциями gl Enable и gl Disable, изменить атрибуты функциями gl Light и glLightModel, изменить свойства материала функцией glMatenal, изменить видовую матрицу, вызывая функции gl Matri xMode, gl LoadHatri x, gl Mul tMatri x, gl Rotate, gl Seal e, gl Trans 1 ate и др.). На этом этапе обработки каждая вершина рассматривается отдельно.

Над вычисленными на этапе преобразования координатами вершин затем выполняется отсечение (см. раздел 1.9).

Эффекты освещения в OpenGL можно контролировать, манипулируя параметрами одного или нескольких источников освещения, определенными в OpenGL. Для конкретной реализации OpenGL есть ограничение на количество источников света (GL_MAX_LIGHTS). Минимальное значение, заданное стандартом, - 8. Получить поддерживаемое количество источников света можно функцией gl Get. Каждый источник освещения в OpenGL можно настроить либо как бесконечно удаленный источник направленного света, либо световую точку, либо прожектор1. Здесь можно настраивать цвет излучаемого света (рассеянный свет, матовое отражение, зеркальное отражение, выраженные в значениях интенсивности RGBA2); положение источника освещения; факторы затухания, определяющие, как интенсивность освещения зависит от расстояния до источника; направление, порядок и коэффициент затухания для точечных источников.

Все эти параметры для каждого источника света можно изменить функцией gl Light. Отдельные источники можно включить или выключить функциями gl ЕпаЫ е и gl Di sabl е, задавая символическую константу, указывающую источник света. Освещение дает первичный и вторичный цвета для каждой вершины. Его можно в делом включить или выключить, вызвав соответственно gl ЕпаЫ е или gl Di sabl е с параметром GLJJGHTING. Если освещение выключено, значения первичного и вторичного цветов определяются по последним значениям, установленным командами gl Col or и gl SecondaryCol or.


⇐ вернуться назад | | далее ⇒