是否使用mipmap技术进行贴图纹理可以节省能源?

时间:2014-07-18 05:13:21

标签: opengl opengl-es-2.0 texture-mapping mipmaps

在映射纹理时使用mipmap可以提高渲染速度并减少伪影。最近,我写了一个测试平台来描述3D图形的功耗,我发现当我使用mipmap技术时,应用程序会消耗更多的功率!这合理吗? 并且,性能是否与映射到对象的图像大小有关?

1 个答案:

答案 0 :(得分:4)

听起来令人惊讶的是,您会看到通过mipmapping增加功耗。但是有可能解释为什么它会在某些情况下发生。

  • 一个方面是对mipmapped纹理进行采样需要读取更多纹素。对于三线性滤波,您需要8个纹素,而在非mipmapped纹理上只需要4个纹素即可进行双线性采样。因此,mipmapping需要两倍的纹理读取。

  • 纹理采样单元必须为三线性插值做更多的工作。在这种情况下,不确定典型的采样单元是否会实际消耗更多功率,但似乎有可能。

  • 在不利的情况下,mipmapping实际上可能需要更多的内存带宽。假设您对使用整个纹理的多边形进行采样,并且纹理稍微缩小,因此LOD例如为0.5。在这种情况下,您需要读取所有级别0和级别1的全部内容。与非mipmapping情况下仅读取级别0相比,这要多25%。

  • 显然,生成mipmap也会使用电源。但只要你这样做一次,然后多次使用纹理,就没那么重要了。

除了质量考虑之外,一般的想法当然是mipmapping更有效,因此使用更少的功率。在更高的LOD值(即更强的缩小)时,我当然希望它发挥作用,因为内存带宽要求会更低。或者换句话说,缓存命中率会更高。

总之,我的理论是,如果您主要以低LOD值进行采样,则mipmapping可能会使用更多功率,而在LOD值较高时则会更节能。