gpt4 book ai didi

iphone - 如何修复首次使用着色器时的延迟?

转载 作者:行者123 更新时间:2023-12-03 19:00:10 25 4
gpt4 key购买 nike

我在应用程序中运行了 Instruments 中的 OpenGL ES 分析工具,它指出编译着色器后,我应该在预热过程中调用 glDrawArrays。于是我检查了自己写的一些着色器的时间,确实程序第一次运行的时候慢了很多。

在我的代码中,我有一个通用着色器加载器,它不知道着色器制服/属性,它只是编译它。而且似乎预热着色器的最佳位置就在那里(所以我不需要到处添加 glDrawArrays)。我尝试将其添加到我的着色器加载器中:

glUseProgram(prog);
glDrawArrays(GL_TRIANGLES, 0, 0);

它修复了延迟,但由于我没有设置任何制服/属性,我不确定它是否安全。而且它看起来像是一种解决方法。预热程序的最佳方法是什么?

最佳答案

您的代码(几乎)完全安全。制服不是问题,因为它们确实包含一些默认值。至于属性,这也不是问题,因为您没有发出任何顶点。

另一方面,这可能是预热着色器的最简单方法,但可能不是最好的方法。类似的技术曾经被用来预热纹理(以填充纹理缓存)。通常是通过渲染几帧而不显示输出来完成的。例如,在《虚幻竞技场》中就可以看到这种情况,加载关卡后会短暂显示“预缓存”。我建议也这样做。

关于iphone - 如何修复首次使用着色器时的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330095/

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