Функция glTexImage2D

Функция glTexImage2D указывает двухмерное изображение текстуры.

Синтаксис

void WINAPI glTexImage2D(
         GLenum  target,
         GLint   level,
         GLint   internalformat,
         GLsizei width,
         GLsizei height,
         GLint   border,
         GLint   format,
         GLenum  type,
   const GLvoid  *pixels
);

Параметры

целевой объект

Целевая текстура. Должно быть GL_TEXTURE_2D.

level

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

internalformat

Количество компонентов цвета в текстуре. Должно быть 1, 2, 3 или 4 или одна из следующих символьных констант: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_R3_G3_B2, GL_RGB, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16 GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12 или GL_RGBA16.

width

Ширина изображения текстуры. Должно быть 2n + 2(border) для некоторых целых чисел n.

height

Высота изображения текстуры. Должно быть 2*m* + 2(border) для некоторого целого числа m.

Границы

Ширина границы. Должно быть либо 0, либо 1.

format

Формат данных пикселей. Это может предположить одно из девяти символьных значений.

Значение Значение
GL_COLOR_INDEX
Каждый элемент является одним значением, цветовым индексом. Он преобразуется в фиксированную точку (с неопределенным числом 0 битов справа от двоичной точки), сдвигается влево или вправо в зависимости от значения и знака GL_INDEX_SHIFT и добавляется в GL_INDEX_OFFSET (см. glPixelTransfer). Результирующий индекс преобразуется в набор цветовых компонентов с помощью GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B и GL_PIXEL_MAP_I_TO_A таблиц и зажат в диапазоне [0,1].
GL_RED
Каждый элемент является одним красным компонентом. Он преобразуется в плавающую точку и собирается в элемент RGBA путем подключения 0,0 для зеленой и синей и 1.0 для альфа-канала. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный GL_c_BIAS смещения и зажата к диапазону [0,1] (см . glPixelTransfer).
GL_GREEN
Каждый элемент является одним зеленым компонентом. Он преобразуется в плавающую точку и собирается в элемент RGBA путем подключения 0,0 для красного и синего, а также 1,0 для альфа.0. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный предвзятость GL_c_BIAS и зажата к диапазону [0,1] (см. glPixelTransfer).
GL_BLUE
Каждый элемент является одним синим компонентом. Он преобразуется в плавающую точку и собирается в элемент RGBA путем подключения 0,0 для красного и зеленого цвета и 1,0 для альфа.0. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный GL_c_BIAS смещения и зажата к диапазону [0,1] (см . glPixelTransfer).
GL_ALPHA
Каждый элемент является одним красным компонентом. Он преобразуется в плавающую точку и собирается в элемент RGBA путем подключения 0,0 для красного, зеленого и синего. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный предвзятость GL_c_BIAS и зажата к диапазону [0,1] (см. glPixelTransfer).
GL_RGB
Каждый элемент является тройным RGB. Он преобразуется в плавающую точку и собирается в элемент RGBA путем подключения 1.0 для альфа-канала. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный GL_c_BIAS смещения и зажата к диапазону [0,1] (см . glPixelTransfer).
GL_RGBA
Каждый элемент является полным элементом RGBA. Он преобразуется в плавающую точку. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный предвзятость GL_c_BIAS и зажата к диапазону [0,1] (см. glPixelTransfer).
GL_BGR_EXT
Каждый пиксель представляет собой группу трех компонентов в этом порядке: синий, зеленый, красный.
GL_BGR_EXT предоставляет формат, соответствующий макету памяти для точечных изображений, независимых от устройств Windows (DIOB). Таким образом, приложения могут использовать те же данные с вызовами функций Windows и вызовами функции OpenGL.
GL_BGRA_EXT
Каждый пиксель представляет собой группу из четырех компонентов в этом порядке: синий, зеленый, красный, альфа. GL_BGRA_EXT предоставляет формат, соответствующий макету памяти независимых от устройств устройств (DIB). Таким образом, приложения могут использовать те же данные с вызовами функций Windows и вызовами функции OpenGL.
GL_LUMINANCE
Каждый элемент является одним значением яркости. Он преобразуется в плавающую точку, а затем собирается в элемент RGBA, реплика значение света три раза для красного, зеленого и синего, а также прикрепляя 1,0 для альфа.0. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный GL_c_BIAS смещения и зажата к диапазону [0,1] (см . glPixelTransfer).
GL_LUMINANCE_ALPHA
Каждый элемент — это пара luminance/alpha. Он преобразуется в плавающую точку, а затем собирается в элемент RGBA, реплика значение света три раза для красного, зеленого и синего. Затем каждый компонент умножается на подписанный коэффициент масштабирования GL_c_SCALE, добавляется в подписанный предвзятость GL_c_BIAS и зажата к диапазону [0,1] (см. glPixelTransfer).

type

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

Пикселей

Указатель на данные изображения в памяти.

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

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

Коды ошибок

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

Имя Значение
GL_INVALID_ENUM
целевой объект не был GL_TEXTURE_2D.
GL_INVALID_ENUM
Формат не был принятой константой формата . Принимаются только константы форматирования, отличные от GL_STENCIL_INDEX и GL_DEPTH_COMPONENT. См. описание параметра формата для списка возможных значений.
GL_INVALID_ENUM
Тип не был константой типа .
GL_INVALID_ENUM
тип был GL_BITMAP и формат не был GL_COLOR_INDEX.
GL_INVALID_VALUE
уровень был меньше нуля или больше, чем max log2, где максимальное значение было возвращенным значением GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
internalformat не был 1, 2, 3 или 4.
GL_INVALID_VALUE
ширина или высота была меньше нуля или больше 2 + GL_MAX_TEXTURE_SIZE, или она не может быть представлена как 2n + 2(граница) для некоторого целочисленного значения n.
GL_INVALID_VALUE
граница не была 0 или 1.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Замечания

Функция glTexImage2D указывает двухмерное изображение текстуры. Текстурирование сопоставляет часть указанного изображения текстуры с каждым графическим примитивом, для которого включена текстура. Двухмерное форматирование включено и отключено с помощью glEnable и glDisable с аргументом GL_TEXTURE_2D.

Изображения текстур определяются с помощью glTexImage2D. Аргументы описывают параметры изображения текстуры, такие как высота, ширина, ширина границы, число подробных сведений (см . glTexParameter) и количество предоставленных компонентов цвета. Последние три аргумента описывают способ представления изображения в памяти. Эти аргументы идентичны форматам пикселей, используемым для glDrawPixels.

Данные считываются из пикселей в виде последовательности подписанных или неподписанных байтов, шортов или длин, а также значений с плавающей запятой с одной точностью в зависимости от типа. Эти значения группируются в наборы из одного, двух, трех или четырех значений в зависимости от формата для формирования элементов. Если тип GL_BITMAP, данные считаются строкой неподписанных байтов (и формат должен быть GL_COLOR_INDEX). Каждый байт данных обрабатывается как восемь 1-разрядных элементов с упорядочением битов, определяемыми GL_UNPACK_LSB_FIRST (см. glPixelStore). См. описание допустимых значений параметра типа в glDrawPixels.

Изображение текстуры может содержать до четырех компонентов для каждого элемента текстуры в зависимости от компонентов. Однокомпонентное изображение текстуры использует только красный компонент цвета RGBA, извлеченный из пикселей. Изображение с двумя компонентами использует значения R и A. На изображении с тремя компонентами используются значения R, G и B. Изображение с четырьмя компонентами использует все компоненты RGBA.

Текстирование не действует в режиме цветового индекса.

Изображение текстуры может быть представлено теми же форматами данных, что и пиксели в команде glDrawPixels , за исключением того, что GL_STENCIL_INDEX и GL_DEPTH_COMPONENT нельзя использовать. Режимы glPixelStore и glPixelTransfer влияют на изображения текстур точно так, как они влияют на glDrawPixels.

Изображение текстуры с нулевой высотой или шириной указывает на пустую текстуру. Если текстура NULL указана для уровня детализации 0, она как если бы текстура была отключена.

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

glGetTexImage

glIsEnabled с аргументом GL_TEXTURE_2D

Требования

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

См. также

glBegin

glDrawPixels

glEnd

glFog

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexParameter