Функция glGetTexImage

Функция glGetTexImage возвращает изображение текстуры.

Синтаксис

void WINAPI glGetTexImage(
   GLenum target,
   GLint  level,
   GLenum format,
   GLenum type,
   GLvoid *pixels
);

Параметры

target

Указывает, какая текстура должна быть получена. GL_TEXTURE_1D и GL_TEXTURE_2D принимаются.

level

Номер уровня детализации нужного изображения. Уровень 0 — это базовый уровень образа. Уровень n — это изображениеn-го сокращения MIP-карты.

format

Формат пикселей для возвращаемых данных. Поддерживаемые форматы: GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_LUMINANCE, GL_BGR_EXT, GL_BGRA_EXT и GL_LUMINANCE_ALPHA.

type

Тип пикселя для возвращаемых данных. Поддерживаемые типы: GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT и GL_FLOAT.

пиксели

Возвращает изображение текстуры. Должен быть указателем на массив типа, заданного типом .

Возвращаемое значение

Эта функция не возвращает значение.

Коды ошибок

Следующие коды ошибок могут быть получены функцией glGetError .

Имя Значение
GL_INVALID_ENUM
Целевой объект, формат или тип не были принятыми значениями.
GL_INVALID_VALUE
уровень меньше нуля или больше , чем в журнале2 (max), где max — возвращаемое значение GL_MAX_TEXTURE_SIZE.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd .

Комментарии

Функция glGetTexImage возвращает изображение текстуры в пиксели. Параметр target указывает, является ли требуемое изображение текстуры указанным в glTexImage1D(GL_TEXTURE_1D) или glTexImage2D(GL_TEXTURE_2D)). Параметр level задает номер уровня детализации нужного изображения. Параметры format и type определяют формат и тип требуемого массива изображений. Описание допустимых значений для параметров формата и типа соответственно см. в разделах glTexImage1D и glDrawPixels.

Операции glGetTexImage лучше всего понять, рассматривая выбранное внутреннее четырехкомпонентное изображение текстуры как цветовой буфер RGBA размера изображения. Затем семантика glGetTexImage идентична семантике glReadPixels , вызываемой с тем же форматом и типом, где для x и y задано значение 0, ширина — ширина изображения текстуры (включая границу, если она была указана), высота — один для одномерных изображений или высота изображения текстуры (включая границу, Значение , если один из них указан) для двухтоковых изображений.

Так как внутреннее изображение текстуры является изображением RGBA, форматы пикселей GL_COLOR_INDEX, GL_STENCIL_INDEX и GL_DEPTH_COMPONENT не принимаются, а GL_BITMAP типа пикселей не принимаются.

Если выбранное изображение текстуры не содержит четыре компонента, применяются следующие сопоставления. Однокомпонентные текстуры обрабатываются как буферы RGBA с красным значением, равным однокомпонентным значениям, а для зеленого, синего и альфа-канала задано нулевое значение.

Двухкомпонентные текстуры обрабатываются как буферы RGBA: красный — значение нуля компонента, альфа — значение компонента 1, а зеленый и синий — равным нулю. Наконец, трехкомпонентные текстуры обрабатываются как буферы RGBA с красным цветом, равным нулю, зеленым — компонентом 1, синим — компонентом 2, а альфа — нулевым.

Чтобы определить требуемый размер пикселей, используйте glGetTexLevelParameter для определения размеров внутреннего изображения текстуры, а затем масштабируйте требуемое количество пикселей по размеру хранилища, необходимого для каждого пикселя, в зависимости от формата и типа. Обязательно учитывайте параметры хранения пикселей, особенно GL_PACK_ALIGNMENT.

Если возникает ошибка, содержимое пикселей не изменяется.

Следующие функции извлекают сведения, связанные с glGetTexImage:

glGet с аргументами GL_PACK_ALIGNMENT и другие

glGetTexLevelParameter с аргументом GL_TEXTURE_WIDTH

glGetTexLevelParameter с аргументом GL_TEXTURE_HEIGHT

glGetTexLevelParameter с аргументом GL_TEXTURE_BORDER

glGetTexLevelParameter с аргументом GL_TEXTURE_COMPONENTS

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Gl.h
Библиотека
Opengl32.lib
DLL
Opengl32.dll

См. также раздел

glBegin

glDrawPixels

glEnd

glGetTexLevelParameter

glReadPixels

glTexImage1D

glTexImage2D