我在我的应用程序中使用Instruments的OpenGL ES分析工具,它指出在编译着色器后,我应该在预热阶段调用glDrawArrays。因此,我检查了一些我编写的着色器的时间,确实第一次运行程序时速度要慢得多。
在我的代码中,我有一个通用的着色器加载器,它不知道着色器的统一变量/属性,只是编译它。而且似乎最好的预热着色器的地方就是在那里(所以我不需要到处添加glDrawArrays)。我尝试将以下内容添加到我的着色器加载器中:
它修复了延迟问题,但由于我没有设置任何uniforms/attributes,我不确定是否安全。而且它看起来像是一种解决方法。预热程序的最佳方法是什么?
在我的代码中,我有一个通用的着色器加载器,它不知道着色器的统一变量/属性,只是编译它。而且似乎最好的预热着色器的地方就是在那里(所以我不需要到处添加glDrawArrays)。我尝试将以下内容添加到我的着色器加载器中:
glUseProgram(prog);
glDrawArrays(GL_TRIANGLES, 0, 0);
它修复了延迟问题,但由于我没有设置任何uniforms/attributes,我不确定是否安全。而且它看起来像是一种解决方法。预热程序的最佳方法是什么?