ВЫВОД ГЕОМЕТРИЧЕСКИХ ПРИМИТИВОВ

Геометрические объекты в OpenGL задаются вершинами. Вершина -это точка в пространстве графической сцены. Для ее определения в библиотеке OpenGL реализована специальная команда:

void glVertex [2 3 4][s i f d][v](type coord)

Вызов любой команды glVertex* всегда определяется четырьмя однородными координатами: х, у, z и w. Если вызывается команда glVertex3*, то вершина задается х,у и z координатами, при этом w полагается равной 1. Для двумерного случая z - 0, a w - 1.

Вершины в OpenGL объединяются в графические примитивы. Это может быть фигура, такая как точка, линия, многоугольник, прямоугольник пикселей или битовый массив. Каждая вершина примитива имеет ассоциированные с ней данные.

  • Текущий цвет - цвет, который вместе с условиями освещения определяет результирующий цвет вершины. Цвет задается, например командой glColor* для режима RGB А.
  • Текущая позиция растра - используется для определения координат растра при работе с пикселями и битовыми массивами. Задается командой glRasterPoos*.
  • Текущая нормаль - определяет вектор нормали, ассоциированный с отдельной вершиной, и задает ориентацию содержащей ее поверхности в трехмерном пространстве. Для указания нормали используется команда glNormal*.
  • Текущие координаты текстуры - определяют местоположение вершины в карте текстуры. Задается командой glTexCoord*.

Задание цветовых атрибутов геометрическим объектам

В OpenGL предусмотрено два режима установки цвета:

  • - задание индекса в палитру цветов;
  • - указание непосредственных значений базовых составляющих R (красный), G (зеленный), В (синий) цвета.

В настоящее время графические приложения в основном используют покомпонентное (RGBA) задание цвета. Благодаря этому максимально используются возможности High Color и True Color режимов графических карт. В данных режимах в полной мере моделируется реалистическая графика (работа с освещением, туманом, прозрачностью, устранение ступенчатости и т.д.).

Для установки цвета в режиме RGB А в OpenGL предусмотрены команды:

void glColor[3 4] [b s I f d](GLtype components)

void glColor[3 4][b s I f d]v(GLtype components)

Первые три параметра команды glColor4* задают значения R, G, В составляющих цвета. Четвертый параметр (А) определяет "прозрачность" цвета. Независимо от типа задаваемых параметров, все они хранятся в формате с плавающей точкой и принимают значения из диапазона [0.0, 1.0]. Значение 1.0 соответствует максимальной интенсивности соответствующего компонента. Для параметра альфа (А) 1.0 соответствует непрозрачному состоянию, а 0.0 - полному прозрачному состоянию цвета. При целочисленных значениях аргументов происходит внутреннее преобразование к формату с плавающей точкой в диапазоне [0.0, 1.0] по сле-

дующей схеме.

GLtype

Преобразование

GLbyte

(2c + 1) / (28- 1)

GLshort

(2c + 1) / (216- 1)

Glint

(2c+ l)/(232- 1)

GLfloat

c

GLdouble

c

Примечание. с- значение аргументов.

После того как установлен цвет, его значение распространяется на все последующие графические примитивы.

Если требуется плавный переход цветов от одной вершины примитива к другой, то для этого в OpenGL предусмотрена команда glEnable(GL_SMOOTH). В этом случае рассчитывается плавный переход цвета между соседними вершинами по закону линейной интерполяции с = t Ci + (1 -1) С2, где С] и С2~ значения цвета соседних вершин, at - коэффициент интерполяции, изменяющийся в диапазоне [0, 1].

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >