glNormal3fv (normalVector);

glBegin (GL_TRIANGLES) ;

glVertex3fv (vertexl); glVertex3fv (vertex2); glVertex3fv (vertex3);

glEnd ( ); Если к заданному выше треугольнику нужно применить процедуру визуализации Гуро, потребуется указать вектор нормали для каждой вершины.

glBegin (GL_TRIANGLES);

glNormal3fv (normalVectorl); glVertex3fv (vertexl); glNormal3fv (normalVector2); glVertex3fv (vertex2); glNormal3fv (normalVector3); glVertex3fv (vertex3); glEnd ( ); Хотя векторы нормали не нужно задавать как единичные векторы, если их все же нормировать на единицу, вычисления сокращаются. Любая неединичная нормаль к поверхности автоматически преобразовывается в единичную, если включить в программу команду

glEnable (GL_NORMALIZE); Данная команда также ренормирует векторы нормали, если они изменились при геометрических преобразованиях, таких как масштабирование или сдвиг.

Другая возможность - обозначить список векторов нормали, которые будут объединены или соотнесены с массивом вершин (разделы 3.17 и 4.3). Для создания массива векторов нормали используются следующие выражения.

glEnableClientState (GL_NORMAL_ARRAY); glNormalPointer (dataType, offset, normalArray); Параметру dataType присваивается постоянное значение GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT (значение по умолчанию) или GL_DOUBLE. Число байтов между последовательными векторами нормали в массиве normalArray задается параметром offset, значение по умолчанию которого - 0.

ОПЕРАЦИИ ФОРМИРОВАНИЯ ПОЛУТОНОВОГО ИЗОБРАЖЕНИЯ OpenGL

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

glEnable (GL_DITHER) ; Отключить указанные процедуры можно с помощью команды

glDisable (GL_DITHER);

ТЕК-ТУРНЫЕ ФУНКЦИИ OpenGL

OpenGL предлагает обширный набор текстурных функций и позволяет задавать узор линии, поверхности, внутреннего объема области пространства, а также вводить в текстурные узоры другие подузоры. -тоит отметить, что наложить текстурный узор и работать с ним можно по-разному. Кроме того, текстурные узоры используются для имитации отображения среды. Текстурные процедуры OpenGL можно использовать только в цветовом режиме RGB (RGBA), хотя некоторые параметры можно задать, используя индекс таблицы цветов.

ФУНКЦИИ ЛИНЕЙНЫХ ТЕК-ТУР OpenGL

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

glTexImagelD (GL_TEXTURE_1D, О, GL_RGBA, nTexColors, О, dataFormat, dataType, lineTexArray);

glEnable (GL_TEXTURE_1D) ; Первому аргументу функции glTexImagelD присваивается символьная константа GL_TEXTURE_1D, чтобы указать, что массив текстур определяется для одномерного объекта - линии. Если неизвестно, поддерживает ли система текстурные узоры с заданными параметрами, используем символьную константу GL_PR0XY_TEXTURE_1D и зададим значение первого аргумента функции glTexImagelD. Это позволяет вначале запросить систему (процедуры запроса рассмотрены в следующем разделе), а затем определить элементы массива текстуры.


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