繁体   English   中英

RGBA整数值到OpenGL纹理

[英]RGBA integer values to OpenGL Texture

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

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

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

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

存储数据的方式或多或少取决于您。 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); 纹理中的一行必须具有width * sizeof(GLuint)个字节才能起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM