Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用一些复杂的着色器,在 iOS 设备上编译最多需要 5 秒左右。着色器经过高度优化以减少应用程序的运行时间,但它们越优化,编译时间就越长。
我想知道是否有办法保存着色器的编译版本以在第一次运行后加载,而不是每次运行应用程序时都编译它。关于如何解决这个问题的任何想法都会非常有用。
我相信 OpenGL 4.1 有一个名为“ARB_get_program_binary”的扩展,它允许完成这样的事情,但这绝对不是 iOS 的选择。
OpenGL ES 2 在其核心规范中包含着色器二进制文件。
但是 OpenGL ES 的 iOS 实现的问题在于它不导出任何二进制格式。意思是 glGetInteger(GL_NUM_SHADER_BINARY_FORMATS) 返回 0。
所以在 iOS 上没有二进制着色器格式的运气。
在 iOS 8 和 OpenGL ES 3.0 之前,没有办法做到这一点。