我正在处理一些复杂的着色器,这些着色器在 iOS 设备上编译最多需要 5 秒左右的时间。着色器已经过高度优化以减少应用程序的运行时间,但它们变得越优化,编译时间就越长。
我想知道是否有一种方法可以保存着色器的编译版本以在第一次运行后加载,而不是每次运行应用程序时都编译它。关于如何解决这个问题的任何想法都会非常有用。
我相信 OpenGL 4.1 有一个名为“ARB_get_program_binary”的扩展,它允许执行类似的操作,但这绝对不是 iOS 的一个选项。
最佳答案
OpenGL ES 2 在其核心规范中获得了着色器二进制文件。
但 iOS 实现 OpenGL ES 的问题在于它不导出任何二进制格式。意思是 glGetInteger(GL_NUM_SHADER_BINARY_FORMATS) 返回 0。
所以在 iOS 上使用二进制着色器格式没有运气。
关于ios - 在 iOS 上使用 OpenGL ES 保存已编译的 GLSL 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404022/