我需要将GL_RGBA32F作为内部格式,但是在OpenGL ES实现中却没有。取而代之的是,我仅将GL_FLOAT作为纹理数据类型。 OES_texture_float规范无话可说。所以我不知道我的纹理数据是否将被标准化为[0,1]。基本上我需要将未固定的纹理数据存储在纹理中,无论它是浮点数还是整数值。我如何获取纹理中未归一化的数据?

最佳答案

可悲的是,OpenGL ES与桌面OpenGL对待参数glTex(Sub)Image *的方式有所不同。

在桌面OpenGL中,定义纹理的实际格式的是内部格式。在GL ES 2.0中,定义此格式的是格式和类型值。因此,如果上载(GL_RGBA,GL_UNSIGNED_BYTE)纹理,则相当于使用GL_RGBA8作为内部格式。

这意味着,如果需要浮点纹理,则可以使用(GL_RGBA,GL_FLOAT)作为格式和类型参数。这两个规范之间毫无意义的矛盾。

07-24 09:45
查看更多