1.7.2. Операции обработки вершин Конечный результат использования любого из рассмотренных методов рисования примитивов - передача данных о примитивах на первый этап их обработки в OpenGL, обработку вершин (см. рис. 1.1, 2). Здесь координаты вершин преобразуются по видовым матрицам и матрицам проекции, нормали преобразуются обратным транспонированием левой верхней части матрицы модели-вида размером 3x3, текстурные координаты преобразуются с помощью текстурных матриц, накладываются вычисления освещения, из-за чего меняется основной цвет; текстурные координаты могут быть вычислены автоматически, наложены свойства материала и вычислены размеры точек. Все это строго определено в стандарте. Операции выполняются в определенном порядке по определенным формулам, контролируемым определенными параметрами состояния OpenGL.
Иногда этап обработки вершин называют преобразование и освещение, или T&L (Transformation and Lighting), так как в данный момент названные операции самые значимые. Приложение может контролировать этот этап только через изменение параметров состояния OpenGL (например, включить или выключить освещение функциями glEnable и glDisable, изменить атрибуты функциями glLight и gl LightModel, изменить свойства материала функцией gl Materi а 1, изменить видовую матрицу, вызывая функции glMatrixMode, gl LoadMatrix, glMuUMatrix, gl Rotate, glScal e, gl Transi ate и др.). На этом этапе обработки каждая вершина рассматривается отдельно.
Над вычисленными на этапе преобразования координатами вершин затем выполняется отсечение (см. раздел 1.9).
Эффекты освещения в OpenGL можно контролировать, манипулируя параметрами одного или нескольких источников освещения, определенными в OpenGL. Для конкретной реализации OpenGL есть ограничение на количество источников света (GL_MAX_LIGHTS). Минимальное значение, заданное стандартом, - 8. Получить поддерживаемое количество источников света можно функцией gl Get. Каждый источник освещения в OpenGL можно настроить либо как бесконечно удаленный источник направленного света, либо световую точку, либо прожектор1. Здесь можно настраивать цвет излучаемого света (рассеянный свет, матовое отражение, зеркальное отражение, выраженные в значениях интенсивности RGBA2); положение источника освещения; факторы затухания, определяющие, как интенсивность освещения зависит от расстояния до источника; направление, порядок и коэффициент затухания для точечных источников.