我正在用C ++编写一个光线连接器,它将结果输出到常规图像文件。现在,我想将内部RGBA表示(4个整数)渲染到由GLUT提供的OpenGL窗口。
我已经知道我必须使用glTexImage2D来生成纹理,将该纹理指定给四边形,然后将这个四边形渲染到相机前面。
http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml
我遇到的问题是我不知道如何将数据呈现给glTexImage2D函数:如何构建包含我的数据的gluByte数据块,来自简单的4整数RGBA表示?< / p>
答案 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)。
答案 2 :(得分:0)
数据块只是指向RGBA表示的指针。您需要致电glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_INT, dataBuffer);
。纹理中的一行必须具有width * sizeof(GLuint)字节才能使其生效。