我应该在iPad上使用哪种OpenGL ES纹理格式来获得更好的dynamic范围?

我正在开发一些使用纹理贴图来存储几何体的软件。 内部格式使用GL_RGB给出了大量的别名,我假设,因为纹理默认压缩到GL_RGB4。

在桌面上,我可以使用GL_RGB16或GL_RGB32F(等)来设置内部格式,但在OpenGL ES 2.0下,似乎没有任何这些格式。 有什么替代品或扩展可以在IOS下使用?

根据苹果(和我自己的经验),GL_RGB和GL_UNSIGNED_BYTE使用8:8:8存储。 要降低颜色精度,您需要指定一个GL_UNSIGNED_SHORT_5_6_5types或将多个通道打包成一个短片的其他types之一。

如果精度问题正在蔓延,那么检查GL_OES_texture_float和GL_OES_texture_half_float扩展可能是明智的。 您仅限于GL_NEAREST过滤,但是我希望这就是您正在使用的内容,因为这是数据存储的一项练习,您可以使用每像素16或32位来上传源通道。

编辑:直接从一个项目(这是上传1频道/像素的图像,但你的想法)ripped的示例用法:

GLfloat *integralImage; /* <lots of stuff to allocate storage and fill integralImage here> */ glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, 256, 256, 0, GL_LUMINANCE, GL_FLOAT, integralImage); 

所以,经过一些研究,你可以得到浮动纹理(如@Tommy所提到的)。 你不能做的是从IOS下的顶点着色器访问它们,使它不能用来存储几何。