Функция glTexSubImage2D

Функция glTexSubImage2D указывает часть существующего одномерного изображения текстуры. Невозможно определить новую текстуру с помощью glTexSubImage2D.

Синтаксис

void WINAPI glTexSubImage2D(
         GLenum  target,
         GLint   level,
         GLint   xoffset,
         GLint   yoffset,
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

Параметры

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

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

level

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

xoffset

Смещение текселя в направлении x в массиве текстур.

yoffset

Смещение текселя в направлении y в массиве текстур.

width

Ширина вложенного изображения текстуры.

height

Высота вложенного изображения текстуры.

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 для альфа-канала. Затем каждый компонент умножается на подписанный коэффициент масштабирования 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_LUMINANCE
Каждый элемент является одним значением яркости. Он преобразуется в формат с плавающей запятой, а затем собирается в элемент RGBA, реплика значение света три раза для красного, зеленого и синего, а также подключения 1,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_INVALID_ENUM
Тип не был принятой константой.
GL_INVALID_ENUM
тип был GL_BITMAP и формат не был GL_COLOR_INDEX.
GL_INVALID_VALUE
уровень был меньше нуля или больше, чем max log2, где максимальное значение было возвращенным значением GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
xoffset было меньше -b; или ширина xoffset + была больше, чем w - b; или yoffset было меньше -b; или высота yoffset + была больше, чем h - b, где w является GL_TEXTURE_WIDTH, h является GL_TEXTURE_HEIGHT, и b — ширина GL_TEXTURE_BORDER измененного изображения текстуры.
Обратите внимание, что w и h включают в себя дважды ширину границы.
GL_INVALID_VALUE
ширина была меньше b, где b — ширина границы массива текстур.
GL_INVALID_VALUE
граница не была нулевой или 1.
GL_INVALID_OPERATION
Массив текстур не определен предыдущей операцией glTexImage2D .
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Замечания

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

Тексели, на которые ссылается пиксели, заменяют область существующего массива текстур x индексами xoffset и xoffset + (ширина 1) включительно и y индексов yoffset и yoffset + (высота 1) включительно. Этот регион не может включать любые тексели за пределами диапазона исходно заданного массива текстур.

Указание вложенного изображения с шириной нуля не влияет и не создает ошибку.

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

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

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

glGetTexImage

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

Требования

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

См. также

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter