GLint texHeight;
glTexImage2D (GL_PROXY_TEXTURE_2D, 0, GL_RGBA12, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glGetTexLevelParameteriv (GL_PROXY_TEXTURE_2 D, 0, GL_RGBA12,
GL_TEXTURE_HEIGHT, StexHeight); Если система не поддерживает запрошенную высоту узора (в данном случае 16), параметру texHeight присваивается значение 0. В противном случае возвращается запрошенное значение. Аналогично можно формировать запросы относительно других параметров узора, используя такие символьные константы, как GL_TEXTURE_WIDTH, GL_TEXTURE_DEPTH, GL_TEXTURE_BORDER и
GL_TEXTURE_BLUE_SIZE. В каждом случае возврат значения 0 указывает, что запрошенное значение параметра в функции glTexImage предоставить невозможно. Для данных в формате с плавающей запятой вместо суффикса i используется код f.
Даже если для предложенной текстуры был получен положительный ответ, может оказаться, что сохранить узор в памяти невозможно. Это может произойти, если доступная память занята другим узором.
АВТОМАТИЧЕСКОЕ ТЕКСТУРИРОВАНИЕ ПОВЕРХНОСТЕЙ ВТОРОГО ПОРЯДКА
В OpenGL есть процедуры для автоматической генерации текстурных координат в определенных приложениях. Эта возможность особенно полезна, если трудно непосредственно определить для объекта координаты поверхности, взамен этого можно использовать функцию GLU для применения этих процедур к поверхностям второго порядка.
Чтобы отобразить текстурный узор на поверхность второго порядка, вначале устанавливаются параметры пространства текстур. Затем вызывается следующая функция, и определяется объект второго порядка, как описано в разделе 8.6.
gluQuadricTexture (quadSurfObj, GL_TRUE)
Параметр quadSurfObj в этой функции - имя объекта второго порядка. Если тек-стурирование поверхности нужно отключить, символьная константа GL_TRUE заменяется константой GL_FALSE.
ОДНОРОДНЫЕ ТЕКСТУРНЫЕ КООРДИНАТЫ
Положение в четырехмерном пространстве текстур задается следующим образом: glTexCoord4* (sCoord, tCoord, rCoord, htexCoord); Текстурные координаты преобразовываются с использованием матрицы 4 на 4 так же, как изменяются координаты сцены: каждая координата делится на однородные параметр (раздел 5.2). Таким образом, значения текстурных координат s, t и г в приведенной выше функции делятся на однородный параметр htex, и получается реальная точка в текстурном пространстве.
Однородные координаты в текстурном пространстве полезны, когда на одном дисплее отображаются множественные перспективные эффекты. Например, перспективная проекция объекта может включать текстурный узор, полученный с помощью другого преобразования перспективного проектирования. Затем текстурный узор можно модифицировать, используя однородные текстурные координаты, чтобы выравнять перспективное изображение текстуры. Отметим, что однородные текстурные координаты позволяют получать множество других эффектов, облегчающих наложение текстур.
ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ТЕКСТУР OpenGL
В OpenGL есть функции для выполнения множества других операций с текстурами. Если получен текстурный узор (с фотографии или из другого источника), размеры которого не представлены степенью 2, OpenGL предлагает функцию для модификации размера узора. В некоторых реализациях OpenGL есть процедуры множественного текстурирования, позволяющие накладывать на объект несколько текстурных узоров. Отображение среды можно имитировать в OpenGL через создание текстурной карты в форме сферической поверхности, а текстурные координаты для сферических узоров можно сгенерировать автоматически.