RGBA整数值到OpenGL纹理

时间:2012-04-02 16:08:35

标签: c++ opengl graphics glut

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

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

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

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

3 个答案:

答案 0 :(得分:1)

您存储数据的方式或多或少取决于您。 glTexImage2D的最后三个参数(以及其他参数)describe how your data is formatted。关于如何存储数据存在限制(每个像素不能有超过4字节对齐的填充,并且组件必须相邻),但是有很多变化可用。

  

作为宽度x高度x 4大小的数组,每个组件都带有unsigned int:RGBARGBARGBA ...?

这是实现目标的一种方式,但这不是唯一的方法。

答案 1 :(得分:0)

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

或使用GL_UNSIGNED_INT for format

答案 2 :(得分:0)

数据块只是指向RGBA表示的指针。您需要致电glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_INT, dataBuffer);。纹理中的一行必须具有width * sizeof(GLuint)字节才能使其生效。