RGBA整数值到OpenGL纹理

RGBA integer values to OpenGL Texture

本文关键字:OpenGL 纹理 整数 RGBA      更新时间:2023-10-16

我正在C++中编写一个光线投射器,它将结果输出到常规图像文件中。现在,我想将内部RGBA表示(4个整数)渲染到GLUT提供的OpenGL窗口中。

我已经知道我必须使用glTexImage2D来生成一个纹理,将该纹理指定给一个四边形,然后在相机前面渲染这个四边形。

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

我遇到的问题是,我不知道如何将数据呈现给glTexImage2D函数:我如何构建包含我的数据的gluByte数据块,该数据块来自一个简单的4位RGBA表示?

如何存储数据或多或少取决于您自己。glTexImage2D的最后三个参数(以及其他参数)描述了如何格式化数据。存储数据的方式有局限性(除了每个像素4字节的对齐之外,不能有太多填充,并且组件必须相邻),但也有很多可用的变化。

作为一个宽x高x 4大小的数组,每个组件都有一个无符号int:RGBARGBARGBA?

这是一种方法,但不是唯一的方法。

将0-(2^32-1)范围转换为0-(2^ 8-1)。

或者使用GL_UNSIGNED_INT代替format

数据块只是指向RGBA表示的指针。您需要拨打glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_INT, dataBuffer);。纹理中的一行必须具有宽度*sizeof(GLuint)字节才能工作。