我应该总是使用GL_ARGB格式在OpenGL中的所有纹理?

这一直困扰着我一段时间…真的很难真正看到任何差异的performance,所以我在这里问:

如果我的图像没有使用alpha通道,我应该使用“GL_RGB”将它们保存在GFX卡存储器中,还是使用“GL_ARGB”,就好像这个处理器从完整的32位块开始一样快呢?

或GFX卡自动将24位图像转换为32位图像,以提高他们的渲染时间?

编辑:我没有性能问题,但我只是想做到最好的方式! 我也想确保程序在旧显卡上渲染效果不会像新显卡那样优化。

选择适合您的纹理数据的格式 ,并让视频卡驱动程序担心细节。 不要试图超越它。 OpenGL的实现相当完善,将为你做出所有必要的决定以获得最佳性能,无论是将所有纹理转换为32bpp还是其他一些内部格式。

如果您发现有性能问题,请使用像gDEBugger这样的工具来解决性能瓶颈问题。 你的纹理格式非常不可能是这样一个瓶颈。

编辑:如果问题只是内存压力,那么你有太多太大的纹理。 就那么简单。 使用压缩,使用质量较低(每通道较少的位数)纹理,或使用较小的纹理。

如果您关心内存使用情况,请尝试纹理压缩:

  • ARB_texture_compression
  • ARB_texture_compression_rgtc
  • ARB_texture_compression_bptc
  • EXT_texture_compression_s3tc
  • EXT_texture_compression_dxt1
  • EXT_texture_compression_latc
  • EXT_texture_compression_rgtc

哪一个使用一般建议是很难的。 尝试那些适用于您的纹理格式(RGB纹理不适用于RG压缩),并对产生的视觉质量有一个很好的看法。