Кроме того, в операции отображения текстуры можно использовать символьную константу GL_DECAL, при этом альфа-факторы RGBA будут использоваться как коэффициенты прозрачности. В этом случае объект рассматривается так, как будто он прозрачный, а цветная текстура нанесена на фоновый объект. Если текстурный узор содержит только RGB-значения без альфа-факторов, цвет текстуры замещает цвет объекта. Кроме того, в некоторых случаях, например, когда текстурный узор содержит только альфа-факторы, возможности пометить объект нет.

Если параметру applicationMethod присвоить значение GL_BLEND, процедуры текстурирования выполняют смешивание цветов с использованием цвета, заданного функцией

glTexEnv* (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, blendingColor); Согласно типу переходного цвета к функции прибавляется суффикс i или f. Если переходной цвет представлен в массиве, также добавляется суффикс v.

ТЕКСТУРНОЕ ОБРАМЛЕНИЕ В OpenGL

Если координаты в пространстве текстур не принадлежат диапазону 0-1, узоры, описанные в массиве текстуры, можно повторить с помощью команды

glTexParameter* (texSpace, texWrapCoord, GL_REPEAT); Узоры копируются с использованием только дробной части координаты в пространстве текстур. При этом параметру texSpace присваивается одно из символьных значений GL_TEXTURE_1D, GL_TEXTURE_2D или GL_TEXTURE_3D, а параметр texWrapCoord обозначает координаты в пространстве текстур с использованием констант GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T или GL_TEXTURE_WRAP_R.

Чтобы ввести текстурные координаты в единичный интервал, вместо GL_REPEAT используется символьная константа GL_CLAMP. Если при активизированной данной опции значение координаты больше 1, оно превращается в 1. Подобным образом, если значение координаты меньше 0, оно превращается в 0. В конкретном пространстве текстур можно задать любую комбинацию повторения и ограничения координат. По умолчанию для всех координат используется параметр GL_REPEAT.

КОПИРОВАНИЕ ТЕКСТУРНЫХ УЗОРОВ OpenGL ИЗ БУФЕРА КАДРОВ

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

glCopyTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, х0, у0, texWidth,

texHeight, 0); Значения 0 в списке аргументов указывают, что данный узор не является сокращенной версией и не имеет границы. Точка (хО, уО) в буфере кадров, отсчитываемая от левого нижнего края буфера, соответствует левому нижнему углу блока цветов пикселей размером texWidth на texHeight.

Чтобы получить блок цветов пикселей как текстурный подузор, можно использовать знакомую функцию:

glCopyTexSubImage2D (GL_TEXTURE_2D, 0, xTexElement,

yTexElement, x0, yO, texSubWidth, texSubHeight); Данный блок значений пикселей помещается в текущий узор в точке элемента текстуры (xTexElement, yTexElement). Параметры texSubWidth и texSubHeight задают размер блока пикселей, левый нижний угол которого находится в точке (хО, уО) буфера кадров.

МАССИВЫ КООРДИНАТ ТЕКСТУРЫ OpenGL


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