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.