ios - 在 iOS 上使用 OpenGL ES 保存已编译的 GLSL 二进制文件

标签 ios opengl-es glsl

我正在处理一些复杂的着色器,这些着色器在 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/

相关文章:

iphone - 仅当页码为零时隐藏上一个按钮,仅当页码为 20 时隐藏下一个按钮

html - WebGL:如何获取片段着色器中每个像素的位置?

c++ - 在尝试计算点 "point"是否在三角形中时,我的代码有什么问题?

c++ - OpenGL 纹理坐标无效

opengl-es - 如何在 GLSL ES 中确定纹理的偶数/奇数线

opengl - 如何使用 OpenGL 和 GLSL 手动填充深度缓冲区

ios - 检查 collectionView 是否滚动到顶部

c++ - 如何在IOS中打印xml图像?

iOS:在 tableView 中显示 firebase 数据

java - OpenGL ES 中的纹理质量差