gpt4 book ai didi

optimization - OpenGL - glBindTexture - 过早优化?

转载 作者:行者123 更新时间:2023-12-03 16:14:58 24 4
gpt4 key购买 nike

我已经看到缓存了当前 GL 纹理名称的示例代码(尤其是在 iOS GL 项目中),并且在调用 glBindTexture 之前进行了比较。目标是避免对 glBindTexture 的不必要调用。

例如

if (textureName != cachedTextureName) {
glBindTexture(GL_TEXTURE_2D, textureName);
cachedTextureName = textureName;
}

这种方法要求对 glBindTexture 的所有调用都以类似方式处理,最好是通过包装器。但是包含第三方代码使这成为问题,并且成为另一个要记住的事情。

问:这是一个有用的优化吗?或者 OpenGL 实现是否足够聪明,可以忽略对纹理名称未更改的 glBlindTexture 的调用?

谢谢。

最佳答案

据我所知,规范中没有提到这一点。实际上,如果您重新绑定(bind)相同的纹理,许多实现实际上会进行一些处理,因为如果您不测试当前纹理,您会看到相对性能下降。如果可能的话,我建议使用测试,以确保实现细节不会对您的程序产生不利影响。

一般来说,使用您自己的状态处理对 OpenGL 状态机进行抽象是非常有用的,这样您就可以查询诸如绑定(bind)纹理或事件矩阵之类的状态,而无需调用 glGet。这几乎总是比您的自定义处理慢。这也允许您禁止无效行为,并且通常使您的程序更容易推理。

关于optimization - OpenGL - glBindTexture - 过早优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4272212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com