对于24位RGB(3个8位通道)图像,glBindImageTexture看起来没有image format。我的纹理具有GL_RGB8
类型的内部格式(24位RGB图像)。不幸的是,我不能轻易地改变我在运行时绑定到图像单元的纹理类型 - 是否可以使用不同的图像格式和imageLoad并仍然可以访问24位RGB数据?
答案 0 :(得分:3)
不,您不能将GL_RGB8用于图像加载/存储。这样做是因为允许实现通过用GL_RGB8
替换它来支持GL_RGBA8
。但如果他们可以直接支持3组件格式,他们也不允许这样做。因此,作为规范的OpenGL不知道实现是否实际上可以处理每像素24位或者假装是否使用32位纹理。
所以OpenGL只是迫使你明确地进行替换。