Целочисленные значения RGBA для текстуры OpenGL - PullRequest
1 голос
/ 02 апреля 2012

Я пишу Ray Caster на C ++, который выводит свои результаты в обычные файлы изображений. Теперь я хочу визуализировать внутреннее RGBA-представление (4 целых числа) в окне OpenGL, предоставленном GLUT.

Я уже знаю, что должен использовать glTexImage2D для генерации текстуры, назначить эту текстуру кваду, а затем визуализировать этот квад прямо перед камерой.

http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как мне представить данные функции glTexImage2D: как мне построить этот блок данных gluByte, содержащий мои данные, исходя из простого 4-целочисленного представления RGBA?

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Как вы храните ваши данные, в большей или меньшей степени зависит от вас.Последние три параметра glTexImage2D (а также дополнительные параметры) описывают, как форматируются ваши данные .Существуют ограничения на то, как вы можете хранить свои данные (у вас не может быть большого отступа, кроме 4-байтового выравнивания на пиксель, и компоненты должны быть смежными), но есть много вариантов.

Как массив шириной x высотой x 4 размера, с целым числом без знака для каждого компонента: RGBARGBARGBA ...?

Это один из способов сделать это, но это не единственныйспособ.

0 голосов
/ 02 апреля 2012

Блок данных - это просто указатель на ваше представление RGBA.Вы хотите позвонить glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_INT, dataBuffer);.Строка в вашей текстуре должна иметь ширину * размер (GLuint) байтов, чтобы это работало.

0 голосов
/ 02 апреля 2012

Преобразуйте свой 0- (2 ^ 32-1) диапазон до 0- (2 ^ 8-1).

Или используйте GL_UNSIGNED_INT для format.

...