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函数:我如何构建包含我的数据的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)字节才能工作。
相关文章:
- 如何显示具有 opengl 纹理的灰度图像
- 无法使 opengl 纹理正常工作
- 现代OpenGL纹理金字塔
- OpenGL:纹理渲染被卡住
- 如何使用Qt多媒体和C++将.mp4视频从OpenGL纹理中保存出来
- 在某些情况下,多个 OpenGL 纹理不起作用?
- 如何将硬编码图像加载到 OpenGL 纹理中
- OpenGL 纹理会导致 ImGUI 窗口永久失焦
- 我如何将Win32窗口渲染到OpenGL纹理
- 将Pixeldata渲染到OpenGL纹理四边形中
- OpenGL纹理闪烁/有时在窗口大小上移动
- OpenGL 纹理坐标不起作用
- OpenGL 纹理状态使用警告:
- OpenGL纹理未显示
- OpenGL纹理不呈现
- 获取 OpenGL 纹理中特定像素的颜色
- C++ / OpenGL:纹理到像素图示例 - 缩小转换误差
- OpenGl 纹理拉扯
- OpenGL纹理格式,为OpenGL创建图像/纹理数据
- 创建原始OpenGL纹理数据(C++)