Функция 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_TEXTURE_2D. |
|
Формат не был принятой константой формата . Принимаются только константы форматирования, отличные от GL_STENCIL_INDEX и GL_DEPTH_COMPONENT. См. описание параметра формата для списка возможных значений. |
|
Тип не был константой типа . |
|
тип был GL_BITMAP и формат не был GL_COLOR_INDEX. |
|
уровень был меньше нуля или больше, чем max log2, где максимальное значение было возвращенным значением GL_MAX_TEXTURE_SIZE. |
|
internalformat не был 1, 2, 3 или 4. |
|
ширина или высота была меньше нуля или больше 2 + GL_MAX_TEXTURE_SIZE, или она не может быть представлена как 2n + 2(граница) для некоторого целочисленного значения n. |
|
граница не была 0 или 1. |
|
Функция была вызвана между вызовом 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:
glIsEnabled с аргументом GL_TEXTURE_2D
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Заголовок |
|
Библиотека |
|
DLL-библиотеки |
|