Возможно ли написать в OpenGL текстуру 4 разных плоскостей - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь записать данные в разные плоскости для текстуры opengl, это возможно?

Я попробовал следующий код

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RED, GL_UNSIGNED_BYTE, (void*)&pixel);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_GREEN, GL_UNSIGNED_BYTE, (void*)&pixel);

Это не работает, как я ожидал, треугольник зеленый вместо желтого, значение пикселя 255.

1 Ответ

1 голос
/ 20 апреля 2020

Нет, это не так. Недостающие каналы «заполняются» 0.0 для красного, зеленого и синего, соответственно 1.0 для альфа-канала.

См. Спецификация профиля ядра API OpenGL 4.6 - 8.4.4.4 Окончательное расширение до RGBA :

[...] Каждая группа преобразуется в группу из 4 элемента следующим образом: если группа не содержит элемент A, то добавляется A и устанавливается один для целочисленных компонентов или 1,0 для компонентов с плавающей запятой. Если какой-либо из R, G или B отсутствует в группе, каждый отсутствующий элемент добавляется и ему присваивается значение 0 для целочисленных компонентов или 0,0 для компонентов с плавающей запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...