glCopyTexSubImage2D - копіювання підзображення двовимірної текстури.

C-специфікація

void glCopyTexSubImage2D (GLenum target,
                          GLint level,
                          GLint xoffset,
                          GLint yoffset,
                          GLint x,
                          GLint y,
                          GLsizei width,
                          GLsizei height) ;

 

Параметри

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-им зображенням.

xoffset вказує текстельне зміщення у напрямку осі x у текстурному масиві.

yoffset вказує текстурне зміщення у напрямку осі y у текстурному масиві.

x, y вказує координати вікна нижнього лівого кута прямокутного регіону пікселів, які будуть скопійовані.

width вказує ширину текстурного підзображення.

height вказує висоту текстурного підзображення.

Опис

Функція glCopyTexSubImage2D заміняє прямокутну порцію двовимірного зображення текстури або кубічного текстурного зображення на пікселі з цілі вказаної у параметрі GL_READ_BUFFER (ніж з головної пам'яті, як у випадку функції glTexSubImage2D).

Піксельний прямокутник з екрану з нижнім лівим кутом у позиці (x, y) і з шириною width і висотою height замінює порцію текстурного масиву на індекси з осі x з xoffset до xoffset + width - 1, включно, і y індекси від yoffset до yoffset + height - 1, включно, на рівні вказаному у параметрі level.

Пікселі у прямокутнику обробляються так само як при виклику функції glCopyPixels, але процес зупиняється перед кінцевим перетворенням. В даній точці, усі компоненти пікселей вміщуються у проміжок 0-1 і тоді перетворюються у внутрішній формат текстури для зберігання піксельного масиву.

Кінцевий прямокутник у масиві текстури може не включати будь-які з вказаних пікселів ззовні текстурного масиву. Не є помилкою вказувати під текстуру з нульовою шириною або висотою, але такі параметри дають жоден ефект.

Якщо будь-які пікселі з вказаного прямокутного регіону поточної цілі GL_READ_BUFFER містяться ззовні з вікна зчитування асоційованого з поточним контекстом малювання, тоді значення отримані з даних пікселів являються невизначеними.

Вносяться жодні зміни до параметрів internalformat, width, height або border вказаного текстурного масиву або піксельних значень ззовні вказаного підрегіону.

Нотатки

Функція glCopyTexSubImage2D доступна у системі OpenGL версії 1.1 або вище.

Константи 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 або вище.

Текстурування не дає ефектів у колір-індексному режимі.

Режими функцій glPixelStore і glPixelTransfer дають ефект над текстурними зображеннями такі ж як у функції glDrawPixels.

Якщо підтримується розширення ARB_imaging, компоненти RGBA зчитуютані з буфера кадру можуть оброблятися конвеєром текстурування. Перегляньте glTexImage1D щоб отримати детальну інформацію.

Помилки

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_OPERATION генерується якщо текстурний масив не був визначений попередніми викликами функцій glTexImage2D або glCopyTexImage2D.

GL_INVALID_VALUE генерується якщо параметр level містить значення менше від 0.

GL_INVALID_VALUE може бути згенероване якщо параметр level містить значення більше ніж логарифм з базою 2 від значення max, де значення max можна отримати з параметру GL_MAX_TEXTURE_SIZE.

GL_INVALID_VALUE генерується якщо xoffset < -b, xoffset + width > w - b, yoffset < -b або yoffset + height > h - b, де w являється GL_TEXTURE_WIDTH, h являється GL_TEXTURE_HEIGHT, і b являється GL_TEXTURE_BORDER текстурного зображення, яке модифікується. Зверніть увагу, що w і h включають подвійну ширину рамки.

GL_INVALID_OPERATION генерується якщо функція glCopyTexSubImage2D виконується між відповідними викликами функцій glBegin і glEnd.

Пов'язані параметри

glGetTexImage

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

Перегляньте також

glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage3D, glPixelStore, glPixelTransfer, glReadBuffer, glTexEnv, glTexGen, glTexImage1D, glTexImage2D, glTexImage3D, glTexParameter, glTexSubImage1D, glTexSubImage2D, glTexSubImage3D

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glCopyTexSubImage2D.xml