【发布时间】:2016-06-24 18:47:20
【问题描述】:
看起来 glBindImageTexture 没有用于 24 位 RGB(3 个 8 位通道)图像的 image format。我的纹理具有 GL_RGB8 类型的内部格式(24 位 RGB 图像)。不幸的是,我无法轻易更改我在运行时绑定到图像单元的纹理类型——是否可以通过 imageLoad 使用不同的图像格式并仍然访问 24 位 RGB 数据?
【问题讨论】:
-
"不幸的是,我无法轻易更改我在运行时绑定到图像单元的纹理类型" ...怎么办?这是你的纹理;你创造了它。你怎么能不控制它的格式?
-
虽然我可以更改纹理的格式,但实际上无法在运行时更改像素数据。换句话说,我得到了一个特定大小的字节数组,它在内部构造了 3 个连续的 8 位字段——我无法创建一个具有 4 个连续 8 位字段的新数组,因此我可以使用 GL_RGBA8UI
-
... 所以呢? OpenGL 可以将 RGB 数据上传到 RGBA8 纹理。如果您认为这会更慢,请考虑 OpenGL 可能已经在使用您当前的 3 通道纹理。
标签: opengl textures rgb opengl-4 image-unit