OpenGL ES,将纹理格式从RGBA8888更改为RGBA4444将提高填充率?

时间:2011-03-01 14:57:24

标签: performance opengl-es

我正在使用alpha测试渲染很多大图像,而且我正在达到填充率。

如果我将纹理格式从RGBA8888更改为RGBA4444,填充率会提高吗?

编辑:硬件是Iphone 3GS和OpenGL版本1.1

2 个答案:

答案 0 :(得分:2)

做了一些测试我发现了以下内容:

  • 将png加载为RGBA8888我得到42fps
  • 将png加载为RGBA4444我得到44fps
  • 加载pvrtc2我得到53 fps(我不得不加倍纹理大小,因为它没有平方)

似乎从rgba8888更改为rgba4444并不能提高帧率。但是使用pvrtc2可能会这样做。

答案 1 :(得分:1)

您没有指定您询问的特定硬件,但Apple有this来说明iOS设备中的PowerVR GPU:

  

如果您的申请无法使用   压缩纹理,考虑使用   较低精度的像素格式。一个   RGB565,RGBA5551或   RGBA4444格式使用一半的内存   RGBA8888格式的纹理。使用   RGBA8888仅适用于您的应用程序   需要那么高的质量。

虽然这会提高内存使用率,但我不确定它会对填充率产生显着影响。你可能会看到能够同时在缓存中保存更多纹理的改进,但我会听到Tommy关于每像素操作更有可能成为瓶颈的观点。

此外,在纹理尺寸方面,通过使用纹理压缩(如PowerVR GPU的PVRTC),您可以在较小尺寸下获得更好的图像质量,而不是降低纹理像素格式的精度。