Поделиться через


Функция 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