□ флаг, используемый для автоматического генерирования текстурных координат;

□ состояние текстурного окружения;

□ текущую одномерную текстуру;

□ текущую двухмерную текстуру;

□ текущую трехмерную текстуру;

□ текущую кубическую текстуру.

Все эти параметры можно установить для активного модуля текстур соответствующими командами. Модули нумерованы от 0 до GL_MAX_TEXTUREJJNITS-1 (это значение можно получить вызовом функции glGet), а активный модуль текстур выбирается функцией glActiveTexture с параметром в виде соответствующей выбираемому модулю константы. Все команды установки параметров текстуры работают только с активным модулем текстуры. Модуль можно настроить на одно-, двух-, трехмерные или же кубические текстуры, передав в функцию glEnable соответствующую константу.

К активному модулю можно применять обработку текстурных координат. Существуют команды доступа к текущему стеку матриц (в случае если GL_MATR1X_M0DE установлен в GL_TEXTURE), glTexGeri, gl ЕпаЫ e/gl Di sabl e (если включен какой-либо способ генерирования текстурных координат), запросы текущих текстурных координат и текущих растровых текстурных координат. Есть и команды обработки текстурных изображений - все варианты gl TexEnv, gl TexParameter и gl Texlmage; gl Bi ndTexture; gl Enabl e/gl Di sabl e для любого вида текстуры (например, GL_TEXTURE_2D); все варианты затфосов состояния.

Объект текстуры может быть создан функцией gl Bi ndTexture, если ей передать в качестве параметра символическую константу, определяющую вид текстуры, и имя текстуры (целое, отличное от нуля), которое впоследствии будет использоваться для ссылки на созданный текстурный объект. Этот объект становится активным, и все последующие команды будут выполняться над ним. Если gl Bi ndTexture вызывается с именем уже созданного объекта, этот объект просто становится активным. Таким образом приложение может создавать любое количество текстур и легко переключаться между ними.

После создания текстурного объекта необходимо задать для него пиксельные значения, определяющие текстуру. Значения для трехмерной текстуры задаются функцией gl TexImage3D, для двухмерной или кубической - функцией gl TexImage2D, для одномерной - glTexImagelD, При использовании любой из этих трех команд каждое измерение текстурной карты наряду с шириной границы должно иметь размер, кратный степени двойки. Все эти команды работают почти так же, как и glDrawPixels, а отличаются тем, что пикселы, из которых состоит текстура, располагаются в текстурной памяти перед растеризацией. Если нужно переопределить только часть текстуры, используются функции glTexSubImagelD/2D/3D. При этом уже нет ограничений на степень двойки. Также можно создавать или менять текстуры из значений, взятых из буфера кадров, с помощью функций gl CopyTexImagelD/ 2D/3D или g1CopyTex.SubImagelD/20/3D.

Функции gl Compres sedT ex I magel D / 2D / 3D и gl CompressedTexSubImagelD/2D/3D используются для работы с текстурами, представленными в сжатых форматах. Такие текстуры занимают гораздо меньше памяти графического ускорителя, за счет чего она освобождается для дополнительной функциональности или повышается скорость выполнения. Стандарт OpenGL не определяет никаких конкретных форматов, так что приложения должны вначале получить список расширений и определить, поддерживает ли данная реализация сжатые текстуры.


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