glTexImage2D - вказує двох-вимірне зображення текстури.
C специфікація
void glTexImage2D (GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid* data) ;
Параметри
target - вказує цільову текстуру. Повинен містити значення GL_TEXTURE_2D, GL_PROXY_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z або GL_PROXY_TEXTURE_CUBE_MAP.
GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_COMPRESSED_ALPHA, GL_COMPRESSED_LUMINANCE, GL_COMPRESSED_LUMINANCE_ALPHA, GL_COMPRESSED_INTENSITY, GL_COMPRESSED_RGB, GL_COMPRESSED_RGBA, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32, 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, GL_SLUMINANCE, GL_SLUMINANCE8, GL_SLUMINANCE_ALPHA, GL_SLUMINANCE8_ALPHA8, GL_SRGB, GL_SRGB8, GL_SRGB_ALPHA або GL_SRGB8_ALPHA8 - вказує число рівня деталей. Рівень 0 являється базовий рівень зображення. Рівень n являється n-ним зображенням зменшення mipmap.
internalFormat - вказує кількість компонентів кольору у текстурі. Повинно мати значення 1, 2, 3 або 4 або один з наступних символічних констант: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_COMPRESSED_ALPHA, GL_COMPRESSED_LUMINANCE, GL_COMPRESSED_LUMINANCE_ALPHA, GL_COMPRESSED_INTENSITY, GL_COMPRESSED_RGB, GL_COMPRESSED_RGBA, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32, 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, GL_SLUMINANCE, GL_SLUMINANCE8, GL_SLUMINANCE_ALPHA, GL_SLUMINANCE8_ALPHA8, GL_SRGB, GL_SRGB8, GL_SRGB_ALPHA або GL_SRGB8_ALPHA8.
width - вказує ширину зображення текстури включаючи обрамлення, якщо існує. Якщо версія OpenGL не підтримує зображення які мають розмір кратний степені двійки, дане значення повинно бути 2n+2 вміщатись у деякі ціле число n. Усі реалізації підтримують текстурні зображення, які мають хоча б 64 текселя ширини.
height - вказує висоту текстурного зображення включаючи обрамлення, якщо присутнє. Якщо версія OpenGL не підтримує розміри зображення, які не кратні степені двійки, дане значення повинне бути 2m+2 межею для деякого цілого m. Усі реалізації підтримують текстурні зображення, які мають хоча б 64 текселя висоти.
border - вказує ширину межі. Повинно бути або 0, або 1.
format - вказує формат піксельних даних. Приймаються наступні символічні значення: GL_COLOR_INDEX, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_BGR, GL_RGBA, GL_BGRA, GL_LUMINANCE і GL_LUMINANCE_ALPHA.
type - вказує на тип даних піксельних даних. Приймаються наступні символічні значення: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT, GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2 і GL_UNSIGNED_INT_2_10_10_10_REV.
data - передає вказівник на дані зображення у пам'яті.
Опис
Текстурування накладає порцію вказаного текстурного зображення на кожний графічний примітив для якого увімкнений текстурні механізми. Для увімкнення і вимкнення дво-вимірних текстур, викликайте glEnable i glDisable з аргументами GL_TEXTURE_2D. Для увімкнення і вимкнення механізмів текстурування з використанням кубічних текстур, викликайте glEnable i glDisable з аргументом GL_TEXTURE_CUBE_MAP.
Для визначення текстурних зображень, викликайте glTexImage2D. Аргументи описують параметри текстурного зображення, на подобі висоти, ширини, ширини обрамлення, кількість рівня деталей (glTexParameter), і кількість присутніх компонентів кольору. Останні три аргументи описують як зображення представляється у пам'яті; вони ідентичні до форматів пікселів, які використовуються для glDrawPixels.
Якщо target являється GL_PROXY_TEXTURE_2D або GL_PROXY_TEXTURE_CUBE_MAP, жодні дані зчитуються з data, але стан зображення переобчислюється, перевіряється на послідовність, і перевіряється на сумісність з можливостями реалізації. Якщо реалізація не може обробити текстуру обраного розміру, вона встановлює усі стани зображення у 0, але не генерує помилку (перегляньте glGetError). Для отримання цілого масиву, використовуйте масив зображення, рівень якого більший або рівний 1.
Якщо target являється GL_TEXTURE_2D або одним з цілей GL_TEXTURE_CUBE_MAP, дані зчитуються з пам'яті вказаної за допомогою data у якості послідовності беззнакових або знакових байтів, коротких цілих, або цілих з подвійною точністю або дійсних чисел з одинарною точністю в залежності від параметру type. Дані значення групуються у набори з одного, двох, трьох або чотирьох значень, в залежності від параметру format, для формування елементів. Якщо параметр type являється GL_BITMAP, дані вважаються масивом беззнакових байтів (і параметр format повинен бути GL_COLOR_INDEX). Кожні байти даних трактуються у якості восьми 1-бітних елементів, з порядком бітів визначених за допомогою GL_UNPACK_LSB_FIRST (перегляньте glPixelStore).
Якщо буферний об'єкт ім'я якого відмінне від нуля прив'язане до цілі GL_PIXEL_UNPACK_BUFFER (перегляньте glBindBuffer) поки вказується текстурне зображення, data трактуються у якості зміщення байтів у пам'яті об'єктного буфера.
Перший елемент відповідає до нижнього лівого кута текстурного зображення. Наступні елементи просуваються з ліва на право через останні текселі у нижньому рядку зображення текстури, і тоді у вищі рядки зображення. Фінальний елемент відповідає до верхнього правого кута зображення текстури.
Параметр format визначає композицію кожного елементу у параметрі data. Він може припускати один з наступних символічних констант:
GL_COLOR_INDEX
кожен елемент являє собою одне значення, індекс кольору. GL перетворює його до фіксованої точки (з невизначеною кількістю нульових бітів з права від бінарної точки), зміщені вліво або право в залежності від значення знаку 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 i GL_PIXEL_MAP_I_TO_A таблиці і обрізається до проміжку [0,1].
GL_RED
Кожен елемент являється одним компонентом червоного. GL перетворює його на дійсну точку і складає у елемент RGBA додаючи 0 для зеленого і синього і 1 до компоненту прозорості. Кожен компонент тоді перемножується за допомогою знакового коефіцієнту масштабування GL_c_SCALE, додається до знакового зміщення GL_c_BIAS і вкладається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_GREEN
Кожен елемент являється одним зеленим компонентом. GL перетворює дійсну точку і складає у елемент RGBA додаючи 0 до червоного і синього і 1 до компоненту прозорості. Кожен компонент перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, додається до знакового зміщення GL_c_BIAS, і поміщається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_BLUE
Кожен елемент являється знаковим синім компонентом. GL перетворює його на дійсну точку і складає у елемент RGBA вкладаючи 0 у червоний і зелений і 1 у компонент прозорості. Після чого кожен компонент перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, і додається до знакового зміщення GL_c_BIAS і вкладається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_ALPHA
Кожен елемент являється одним компонентом прозорості. GL перетворює його на дійсну точку і складає у елемент RGBA додаючи 0 до червоного, зеленого і синього. Після чого кожен компонент перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, і додається до знакового зміщення GL_c_BIAS, і вміщується у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_INTENSITY
Кожен елемент являється одним значенням інтенсивності. GL перетворює його на дійсну точку, після чого складає її у елемент RGBA замінюючи значення інтенсивності три рази для червоного, зеленого, синього і компоненту прозорості. Кожен компонент перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, додається до знакового зміщення GL_c_BIAS і поміщається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_RGB
GL_BGR
Кожен елемент являється трійкою RGB. GL перетворює його на дійсну точку і складає у елемент RGBA вкладаючи 1 у компонент прозорості. Кожен компонент перемножується на знаковий коефіцієнт GL_c_SCALE, і додається до знакового зміщення GL_c_BIAS, після чого поміщається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_RGBA
GL_BGRA
Кожен елемент містить усі чотири компоненти кольору. Кожен компонент перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, додається до знакового зміщення GL_c_BIAS і поміщається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_LUMINANCE
Кожен елемент являється одним значенням яскравості. GL перетворює його на дійсну точку, тоді складає у елемент RGBA замінюючи значення яскравості три рази для червоного, зеленого і синього і додаючи 1 до компоненту прозорості. Після чого кожен компонент перемножується на коефіцієнт масштабування GL_c_SCALE, додається до знакового зміщення GL_c_BIAS, і обрізається до проміжку [0, 1] (перегляньте glPixelTransfer).
GL_LUMINANCE_ALPHA
Кожен елемент являється парою яскравості і компонента прозорості. GL перетворює її у дійсну точку, після чого складає її у елемент RGBA замінюючи значення яскравості три рази для червоного, зеленого і синього. Кожен компонент тоді перемножується на знаковий коефіцієнт масштабування GL_c_SCALE, і додається до знакового зміщення GL_c_BIAS і тоді поміщається у проміжок [0, 1] (перегляньте glPixelTransfer).
GL_DEPTH_COMPONENT
Кожен елемент являється одним значенням глибини. GL перетворює його на дійсну точку, перемножує на знаковий коефіцієнт GL_DEPTH_SCALE, додає знакове зміщення GL_DEPTH_BIAS, і поміщає у проміжок [0, 1] (перегляньте glPixelTransfer).
Зверніться до документації по команді glDrawPixels для опису доступних значень для параметру type.
Якщо програма бажає зберігати текстури у певному розмірі або певному форматі, вона може опитувати розмірність і формат за допомогою internalFormat. GL тоді обере внутрішнє представлення, яке найближче приближує опитане за допомогою internalFormat, але вони можуть не сходитись. (Представлення вказані за допомогою GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB i GL_RGBA повинні співпадати точно. Цілі значення 1, 2, 3 і 4 можуть також використовуватися для вказування представлень, які вказані вище.)
Якщо параметр internalFormat являється одним з загальних форматів стиснення, GL_COMPRESSED_ALPHA, GL_COMPRESSED_INTENSITY, GL_COMPRESSED_LUMINANCE, GL_COMPRESSED_LUMINANCE_ALPHA, GL_COMPRESSED_RGB або GL_COMPRESSED_RGBA OpenGL замінить внутрішній формат символічною константою для вказаного внутрішнього формату і стискає текстуру перед збереженням. Якщо жоден відповідний формат не доступний, або GL не може стиснути дане зображення з будь-яких причин, внутрішній формат замінюється відповідним базовим внутрішнім форматом.
Якщо параметр internalFormat являється GL_SRGB, GL_SRGB8, GL_SRGB_ALPHA, GL_SRGB8_ALPHA8, GL_SLUMINANCE, GL_SLUMINANCE8, GL_SLUMINANCE_ALPHA або GL_SLUMINANCE8_ALPHA8, текстура трактується так, ніби компоненти червоного, зеленого, синього і яскравості закодовані у просторі кольору sRGB. Будь-який компонент прозорості залишається незмінним. Перетворення з закодованого sRGB компоненту cs до лінійного компоненту cl наступний:
c l = { cs 12.92 якщо cs ≤ 0.04045 ( cs + 0.055 1.055 ) 2.4 якщо cs > 0.04045
Припускається cs являється компонентом sRGB з проміжку [0, 1]
Використовуйте цілі GL_PROXY_TEXTURE_2D або GL_PROXY_TEXTURE_CUBE_MAP для опитування розмірності і формату. Реалізації оновлять і переобчислять найкращий формат для опитуваних розмірності і формату сховища. Для опитування даного стану, викличте glGetTexLevelParameter. Якщо текстура не може бути розміщеною, стан текстури встановлюється у 0.
Одно-компонентна текстура може трактуватись як LUMINANCE, INTENSITY або ALPHA текстур під час фільтрування і застосування. Засноване на зображеннях тінювання може бути увімкнене за допомогою порівняння координати r текстури відносно глибини значення текстури для генерування булевого результату. Перегляньте glTexParameter для деталей над текстовими порівняннями.
Примітка
Текстурування немає ефекту у колір-індексному режимі.
Якщо підтримується розширення ARB_imaging, елементи RGBA також можуть бути обробленими за допомогою конвеєра зображень. Наступні стадії стадії можуть бути застосованими до кольору RGBA перед вміщуванням компоненту кольору у проміжок [0, 1]:
- Заміна компонент кольору за допомогою специфікатора таблиці кольору для GL_COLOR_TABLE, якщо увімкнене. Перегляньте glColorTable.
- Двох-вимірне фільтрування згортуванням, якщо увімкнене. Перегляньте glConvolutionFilter1D. Якщо фільтр згортування змінює ширину (width) текстури (наприклад, через обробку GL_CONVOLUTION_BORDER_MODE з GL_REDUCE), і OpenGL не підтримує текстури, розміри яких не являються кратним ступені двійки, width повинна вміщуватись 2n+2, для деякого n, i height повинно вміщуватися в 2m+2, для деякого m, після фільтрування.
- Компонент RGBA може бути перемножений на GL_POST_CONVOLUTION_c_SCALE, i доданий до GL_POST_CONVOLUTION_c_BIAS, якщо увімкнені. Перегляньте glPixelTransfer.
- Заміна компоненту кольору за допомогою специфікатора таблиці кольору для GL_POST_CONVOLUTION_COLOR_TABLE, якщо увімкнені. Перегляньте glColorTable.
- Перетворення за допомогою матриці кольору. Перегляньте glMatrixMode.
- Компонент RGBA може бути перемноженим на GL_POST_COLOR_MATRIX_c_SCALE, і доданий до GL_POST_COLOR_MATRIX_c_BIAS, якщо увімкнені. Перегляньте glPixelTransfer.
- Заміна компоненту кольору за допомогою специфікатора таблиці кольору для GL_POST_COLOR_MATRIX_COLOR_TABLE, якщо увімкнено. Перегляньте glColorTable.
Зображення текстури може бути представлено за допомогою тих форматів, які доступні у команді glDrawPixels, окрім того, що GL_STENCIL_INDEX не може бути використаний. Режими glPixelStore i glPixelTransfer відображають зображення текстури у тій манері, що і glDrawPixels.
glTexImage2D i GL_PROXY_TEXTURE_2D доступні тільки якщо версія OpenGL являється 1.1 або вищою.
Внутрішні формати відмінні від 1, 2, 3 або 4 можуть використовуватися, якщо версія OpenGL являється 1.1 або вище.
У OpenGL версії 1.1 або вище, data може являтися вказівником NULL. У даному випадку, текстурна пам'ять займається для вміщення текстури ширини width і висоти heightю Ви можете тоді завантажити підтекстури для ініціалізації цієї текстурної пам'яті. Зображення є невизначеним, якщо користувач намагається застосувати неініціалізовану порцію зображення текстури до примітиву.
Формати GL_BGR i GL_BGRA i типи GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2 i GL_UNSIGNED_INT_2_10_10_10_REV доступні тільки у OpenGL з версії 1.2 або вище.
Коли підтримується розширення ARB_multitexture або версія OpenGL являється 1.3 або вище, команда glTexImage2D вказує на двовимірну текстуру для поточної текстурної одиниці, вказаної за допомогою glActiveTexture.
GL_TEXTURE_CUBE_MAP і GL_PROXY_TEXTURE_CUBE_MAP доступні тільки з OpenGL версії 1.3 або вище.
GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 і GL_DEPTH_COMPONENT3 доступні від OpenGL версії 1.4 або вище.
Текстури не кратні степені двійки підтримуються якщо версія OpenGL являється 2.0 або вище, або реалізація експортує розширення GL_ARB_texture_non_power_of_two.
Внутрішні формати GL_SRGB, GL_SRGB8, GL_SRGB_ALPHA, GL_SRGB8_ALPHA8, GL_SLUMINANCE, GL_SLUMINANCE8, GL_SLUMINANCE_ALPHA, and GL_SLUMINANCE8_ALPHA8 доступні тільки якщо версія OpenGL являється 2.1 або вище.
Помилки
GL_INVALID_ENUM генерується коли параметр target не являється GL_TEXTURE_2D, GL_PROXY_TEXTURE_2D, GL_PROXY_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z або GL_TEXTURE_CUBE_MAP_NEGATIVE_Z.
GL_INVALID_ENUM генерується якщо параметр target являється одним з шести кубічних перетворення цілей 2D зображення і параметри ширини і висоти не являються еквівалентними.
GL_INVALID_ENUM генерується, якщо параметр type не являється константою.
GL_INVALID_ENUM генерується, якщо параметр type являється GL_BITMAP і параметр format не являється GL_COLOR_INDEX.
GL_INVALID_VALUE генерується якщо параметри ширини і висоти являються меншими ніж 0 або більшими за 2+GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE генерується, якщо параметр level являється меншим 0.
GL_INVALID_VALUE може бути згенерованим, якщо level являється більшим ніж log2 max, де max являється поверненим значенням GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE генерується, якщо параметр internalFormat не являється 1, 2, 3, 4 або один з дозволених розмірностей і формату символічних констант.
GL_INVALID_VALUE генерується, якщо параметри width або height являються меншими ніж 0 або більшими ніж 2+GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE генерується, якщо не кратні степеням двійки текстури не підтримуються, і параметри width або height не можуть бути представленими як 2k+2border для деякого цілого значення k.
GL_INVALID_VALUE генерується якщо boreder не являється 0 або 1.
GL_INVALID_OPERATION генерується, якщо параметр type являється одним з GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5 або GL_UNSIGNED_SHORT_5_6_5_REV і параметр format не являється GL_RGB.
GL_INVALID_OPERATION генерується, якщо параметр type являється одним з GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2 або GL_UNSIGNED_INT_2_10_10_10_REV і параметр format не являється GL_RGBA або GL_BGRA.
GL_INVALID_OPERATION генерується якщо параметр target не являється GL_TEXTURE_2D або GL_PROXY_TEXTURE_2D і параметр internalFormat являється GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 або GL_DEPTH_COMPONENT32.
GL_INVALID_OPERATION генерується, якщо параметр format не являється GL_DEPTH_COMPONENT і internalFormat не являється GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 або GL_DEPTH_COMPONENT32.
GL_INVALID_OPERATION генерується якщо internalFormat являється GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 або GL_DEPTH_COMPONENT32 і параметр format не являється GL_DEPTH_COMPONENT.
GL_INVALID_OPERATION генерується якщо не нульове ім'я об'єктного буферу асоціюється з ціллю GL_PIXEL_UNPACK_BUFFER і дані буферу зіставляються.
GL_INVALID_OPERATION генерується якщо не нульове ім'я об'єктного буферу асоціюється до цілі GL_PIXEL_UNPACK_BUFFER і дані будуть розпакованими з об'єкта буферу так, що необхідні читання буферу перевищать розмір буферу.
GL_INVALID_OPERATION генерується, якщо не нульове ім'я об'єктного буферу буде асоційовано до цілі GL_PIXEL_UNPACK_BUFFER і дані не являються цілочисельно ділимі на кількість байтів потрібних для збереження у пам'яті для даних вказаний у параметрі type.
GL_INVALID_OPERATION генерується, якщо glTexImage2D виконується між викликами glBegin і glEnd.
Пов'язані параметри
glGetTexImage
glIsEnabled з аргументом GL_TEXTURE_2D або GL_TEXTURE_CUBE_MAP
glGet з аргументом GL_PIXEL_UNPACK_BUFFER_BINDING
Перегляньте також
glActiveTexture, glColorTable, glConvolutionFilter2D, glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glDrawPixels, glMatrixMode, glPixelStore, glPixelTransfer, glSeparableFilter2D, glTexEnv, glTexGen, glTexImage1D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D, glTexParameter, Вступ до OpenGL (Open Graphics Library) - відкрита графічна бібліотека
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexImage2D.xml