1

我正在使用一些复杂的着色器,在 iOS 设备上编译最多需要 5 秒左右。着色器经过高度优化以减少应用程序的运行时间,但它们越优化,编译时间就越长。

我想知道是否有办法保存着色器的编译版本以在第一次运行后加载,而不是每次运行应用程序时都编译它。关于如何解决这个问题的任何想法都会非常有用。

我相信 OpenGL 4.1 有一个名为“ARB_get_program_binary”的扩展,它允许完成这样的事情,但这绝对不是 iOS 的选择。

4

2 回答 2

3

OpenGL ES 2 在其核心规范中包含着色器二进制文件。

但是 OpenGL ES 的 iOS 实现的问题在于它不导出任何二进制格式。意思是 glGetInteger(GL_NUM_SHADER_BINARY_FORMATS) 返回 0。

所以在 iOS 上没有二进制着色器格式的运气。

于 2012-07-10T04:51:41.137 回答
-1

在 iOS 8 和 OpenGL ES 3.0 之前,没有办法做到这一点。

于 2015-09-21T16:06:29.947 回答