2

It looks like glBindImageTexture does not have an image format for 24-bit RGB (3 8-bit channels) images. My texture has an internal format of the type GL_RGB8 (a 24-bit RGB image). Unfortunately I cannot easily change the type of my texture that I'm binding to the image unit at runtime -- is it possible to use a different image format with imageLoad and still access the 24-bit RGB data?

4

1 回答 1

4

不,您不能将 GL_RGB8 与图像加载/存储一起使用。这样做是因为允许实现GL_RGB8通过将其替换为GL_RGBA8. 但是,如果他们可以直接支持 3-component 格式,他们也可以不这样做。因此,作为规范的 OpenGL 不知道实现是否真的可以处理每像素 24 位,或者它是否假装使用 32 位纹理来处理。

所以 OpenGL 只是强制显式地进行替换。

于 2016-06-24T19:20:59.793 回答