Генерация текстурных координат

Текстурные координаты, ассоциированные с вершиной, могут быть получены из текущих текстурных координат или быть сгенерированными согласно функции, зависящей от координат вершины. Генерацией текстурных координат управляет команда:

void glTexGen{ifd}(GLenum coord, GLenum pname, TYPE param),

void glTexGen{ifd}v(GLenum coord, GLenum pname, TYPE * param),

где coord – текстурная координата; pname – имя параметра; param – значения параметра pname (невекторная или векторная форма).

Аргумент coord должен быть одним из констант GL_S, GL_T, GL_R или GL_Q, указывающих соответствие принадлежащим координатам s, t, r и q соответственно. В первой форме команды param является константой, определяющей одно значение параметра текстурной генерации; во второй форме param, указатель на массив значений параметров.

Имя параметра может принимать следующие значения: GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE и GL_EYE_PLANE (два последних параметра только для векторной формы команды).

Для GL_TEXTURE_GEN_MODE параметр param может принимать следующие значения:

- GL_OBJECT_LINEAR – параметр устанавливает функцию генерации текстурных координат

,

где x 0, y 0, z 0 и w 0 – мировые координаты вершины;  p 1, p 2, p 3 и p 4 – коэффициенты уравнения плоскости, которые указываются в param с помощью pname, равного GL_OBJECT_PLANE;

- GL_EYE_LINEAR – параметр устанавливает функцию генерации

,

где ; xe, ye, ze и we – видовые координаты вершины; M – матрица видового преобразования. Коэффициенты уравнения плоскости указываются в param с помощью pname, равного GL_EYE_PLANE;

- GL_SPHERE_MAP. Здесь текстурные координаты s или t генерируются следующим образом:

,

где u – вектор от начала видовых координат к вершине; nf – текущая нормаль после преобразования в видовые координаты; – результирующий вектор отражения, исходя из которого, определяется соответствующая координата:

, ,

где .

Функция glEnable с параметром GL_TEXTURE_GEN_S, GL_TEXTURE_GEN_T, GL_TEXTURE_GEN_R или GL_TEXTURE_GEN_Q включает генерацию соответствующей текстурной координаты, функция
glDisable с теми же параметрами – отключает.

По умолчанию значения коэффициентов уравнения плоскости устанавливаются следующим образом: все pi для координат s, t, r и q равны нулю, кроме p 1 для координаты s и p 2 для t, которые равны единице. Текстурная генерация координат по умолчанию выключена для всех координат.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: