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