调用glGenerateMipmap()

时间:2015-11-13 20:09:41

标签: opengl textures mipmaps

如果我创建mipmap级别但不使用mipmap过滤器会发生什么?它总是从基本mipmap级别进行采样吗?我还能获得mipmap的性能提升吗? 因此,当我们创建mipmap时,驱动程序是否只将所需的mipmap级别加载到纹理内存中并从中加载样本,或者它是否加载了所需的所有级别和样本? 实施细节会有所帮助。

1 个答案:

答案 0 :(得分:1)

如果您不使用其中一个包含mipmap的过滤器值(例如GL_LINEAR_MIPMAP_LINEAR),则不会以任何方式使用您的mipmap。行为就像你从未创建过它们一样。只会使用基本级别,并且不会获得性能提升。

有一些方法可以在没有mipmap过滤器的情况下使用mipmap。通过设置GL_TEXTURE_BASE_LEVELGL_TEXTURE_MAX_LEVEL,您可以强制使用给定的mipmap级别。

现在,如果您生成mipmap并且从不使用它们会发生什么,这完全取决于实现。由于生成mipmap的大多数应用程序都会使用它们,因此可能会有性能成本。

如果供应商发现这是在重要的应用程序/基准测试中发生的,那么可以轻松优化它以不加载未使用的mipmap,甚至推迟mipmap生成直到第一次使用(可能永远不会)。实际上,只要它们被认为是重要的,就会实施大量优化,以使编写得很好的应用程序/基准测试尽可能高效地运行。