OpenGL 图像 Load/Store 24 位 RGB 图像
OpenGL Image Load/Store 24-bit RGB images
看起来 glBindImageTexture 没有 image format 用于 24 位 RGB(3 个 8 位通道)图像。我的纹理具有 GL_RGB8
类型的内部格式(24 位 RGB 图像)。不幸的是,我无法在运行时轻松更改我绑定到图像单元的纹理类型——是否可以将不同的图像格式与 imageLoad 一起使用并仍然访问 24 位 RGB 数据?
不,您不能将 GL_RGB8 与图像 load/store 一起使用。这样做是因为允许实现通过用 GL_RGBA8
替换它来支持 GL_RGB8
。但如果他们可以直接支持 3 分量格式,他们也可以不这样做。因此,作为规范的 OpenGL 不知道该实现是否真的可以处理每像素 24 位,或者它是否假装可以处理 32 位纹理。
所以 OpenGL 只是强制你 明确地进行替换。
看起来 glBindImageTexture 没有 image format 用于 24 位 RGB(3 个 8 位通道)图像。我的纹理具有 GL_RGB8
类型的内部格式(24 位 RGB 图像)。不幸的是,我无法在运行时轻松更改我绑定到图像单元的纹理类型——是否可以将不同的图像格式与 imageLoad 一起使用并仍然访问 24 位 RGB 数据?
不,您不能将 GL_RGB8 与图像 load/store 一起使用。这样做是因为允许实现通过用 GL_RGBA8
替换它来支持 GL_RGB8
。但如果他们可以直接支持 3 分量格式,他们也可以不这样做。因此,作为规范的 OpenGL 不知道该实现是否真的可以处理每像素 24 位,或者它是否假装可以处理 32 位纹理。
所以 OpenGL 只是强制你 明确地进行替换。