glCopyTexImage2D - копіює пікселі у двовимірну текстуру зображення.
C-специфікація
void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) ;
Параметри
target вказує цільову текстуру. Повинен містити одне з значень: GL_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.
level вказує число рівня деталей. Рівень з значенням 0 являється базовим рівнем зображення. Рівень n являється n-рівнем зображення.
internalformat вказує внутрішній формат текстури. Повинен містити одне з наступних символічних констант: 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_RGB, GL_R3_G3_B2, 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.
x, y вказує координати вікна лівого ниджнього кута прямокутного регіону пікселів, які потрібно скопіювати.
width вказує ширину текстурного зображення. Повинен містити значення 0 або 2^n + 2border для деякого цілого числа n.
height вказує висоту текстурного зображення. Повинен містити 0 або 2^m + 2border для деякого цілого числа m.
border вказує шипину рамки. Повинно містити значення 0 або 1.
Опис
Функція glCopyTexImage2D визначає двовимірне зображення текстури, або кубічне зображення текстури з пікселями з поточної цілі, яка вказана у параметрі GL_READ_BUFFER.
Обмежений екраном піксельний прямокутник з нижнім лівим кутом у позиції (x, y) і шириною width + 2border і висотою height + 2border визначає текстурний масив при рівні вказаному у параметрі level. Параметр internalformat вказує внутрішній формат текстурного масиву.
Пікселі у прямокутнику обробляються так само як при виклику функції glCopyPixel, але процес зупиняється перед кінцевим перетворенням. В даній точці усі значення компонентів пікселів обрізаються у проміжок 0-1 і після чого перетворюються у внутрішній формат текстури для збереження у тексельному масиві.
Порядок піскелів такий, при якому нижні координати екрану x і y відповідають нижнім координатам текстури s і t.
Якщо будь-які пікселі у вказаному прямокутнику поточної цілі GL_READ_BUFFER містяться за межами вікна асоційованого з поточним контекстом малювання, тоді значення отримані з цих пікселів являються невизначеними.
Якщо параметр internalformat являється одним з типів sRGB, система OpenGL автоматично не перетворює джерельні пікселі до колірного простору sRGB. У даному випадку може використовуватися функція glPixelMap для виконання перетворення.
Нотатки
Функція glCopyTexImage2D доступна у системі OpenGL версії 1.1 або вище.
Текстурування виконує жодні дії у індекс-колірному режимі.
Значення 1, 2, 3 і 4 не приймаютьсяу якості значень параметру internalformat.
Зображення з нульовою висотою або шириною вказує на текстуру NULL.
Якщо підтримується розширення ARB_imaging, компоненти RGBA зчитані з буферу кадру можуть оброблятися за допомогою конвеєром зображень. Перегляньте функцію glTexImage1D щоб отримати більше деталей.
Константи 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 доступні у системі OpenGL версій 1.3 або вище.
Константи GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 і GL_DEPTH_COMPONENT32 доступні у системі OpenGL версії 1.4 або вище.
Константи для внутрішніх форматів GL_SRGB, GL_SRGB8, GL_SRGB_ALPHA, GL_SRGB8_ALPHA8, GL_SLUMINANCE, GL_SLUMINANCE8, GL_SLUMINANCE_ALPHA і GL_SLUMINANCE8_ALPHA8 доступні у системі OpenGL версії 2.1 або вище. Перегляньте функцію glTexImage2D щоб отримати більше деталей про sRGB-перетворення.
Помилки
GL_INVALID_ENUM генерується якщо параметр target не містить одного з наступних значень: GL_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_INVALID_VALUE генерується якщо параметр level містить значення менше 0.
GL_INVALID_VALUE може генеруватися якщо параметр level являється більшим значення логарифму з базою двійки від значення параметру GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE гененується якщо параметр width містить значення менше від 0 або більше ніж 2 + GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE генерується якщо не підтримуються текстури з розміром відмінним від значень степеня двійки і значення width або depth не можуть бути представленими як 2^k + 2border для деякого цілого числа k.
GL_INVALID_VALUE генерується якщо параметр border не містить значення 0 або 1.
GL_INVALID_VALUE генерується якщо параметр internalformat не містить допустимого значення формату.
GL_INVALID_OPERATION генеруєтся якщофункція glCopyTexImage2D виконується між відповідними викликами функцій glBegin і glEnd.
GL_INVALID_OPERATION генерується якщо параметр internalformat містить значення GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24 або GL_DEPTH_COMPONENT32 і не існує буфера глибини.
Пов'язані параметри
glGetTexImage
glIsEnabled з аргументом GL_TEXTURE_2D або GL_TEXTURE_CUBE_MAP
Перегляньте також
glCopyPixels, glCopyTexImage1D, glCopyTexSubImage1D, glCopyTexSubImage2D, glPixelStore, glPixelTransfer, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexSubImage1D, glTexSubImage2D, glTexParameter
Оригінал
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyTexImage2D.xml