glTexParameterі (GL_TEXTURE_2 D, GL_TEXTURE_MAG_FILTER,

GL_NEAREST) ;

glTexParameterі (GL_TEXTURE_2 D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); Чтобы присвоить пикселям поверхности интерполированный цвет текстур, вместо символьной константы GL_NEAREST используется константа GL_LINEAR.

Координаты в двухмерном пространстве текстур выбираются с помощью команды

glTexCoord2* (sCoord, tCoord); Пространство текстур нормируется так, чтобы узор задавался координатами, принадлежащими диапазону 0,0-1,0. Однако можно использовать любые координаты в пространстве текстур, чтобы повторять узор на поверхности. Текстурные координаты можно задавать в различных форматах, и, чтобы указать формат данных, используется суффикс b, s, i, f или d. Кроме того, если текстурные координаты предлагаются в форме массива, также добавляется суффикс v.

Чтобы проиллюстрировать функции OpenGL для двухмерного пространства текстур, ниже приведен фрагмент кода, в котором узор 32 на 32 вначале задается, а затем отображается в четырехугольную поверхность. Каждый цвет текстуры задается четырьмя компонентами RGBA, кроме того, узор не имеет границы.

GLubyte texArray [32][32][ 4 ] ;

/* Далее в texArray заносятся цветовые компоненты

* текстуры.

*/

/* Выбирается опция "цвет ближайшего". */

д1ТехРагап^ег1 (СЬ_ТЕХТиНЕ_20, GL_TEXTURE_MAG_FILTER, GL_NEAREST); д1ТехРагап^ег1 (СЬ_ТЕХТиЯЕ_20, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, texArray); glEnable (GL_TEXTURE_2D);

/* Весь диапазон цветов текстуры отображается

* в четырехугольник.

*/

glBegin (GL_QUADS);

glTexCoord2f (0.0, 0.0); glVertex3fv (vertexl);

glTexCoord2f (1.0, 0.0); glVertex3fv (vertex2);

glTexCoord2f (1.0, 1.0); glVertex3fv (vertex3);

glTexCoord2f (0.0, 1.0); glVertex3fv (vertex4);

glEnd ( );

glDisable (GL_TEXTURE_2D); ФУНКЦИИ OpenGL ДЛЯ ОБЪЕМНЫХ ТЕКСТУР

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

glTexImage3D (GL_TEXTURE_3D, 0, GL_RGBA, texWidth, texHeight, texDepth, 0, dataFormat, dataType, volTexArray);

glEnable (GL_TEXTURE_3D);

RGBA-цвета текстур хранятся в массиве volTexArray, который содержит 4 х texWidth х texHeight х texDepth элементов. Отметим, что ширина, высота и глубина массива должны быть степенями 2 или 2 плюс степень 2.

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

glTexParameteri (GL_TEXTURE_3 D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameteri (GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); Чтобы значения пикселя определялись линейной интерполяцией цветов текстуры, вместо константы GL_NEAREST используется GL_LINEAR.


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