【发布时间】:2014-05-07 09:34:35
【问题描述】:
我在片段着色器中有大量变量(30 个制服(主要是 vec4),大约 20 个变量(着色器中的 vec3、float、vec4))。它在 iPhone5S 上运行得很好,但在 iPhone4 上我遇到了严重的问题。 GPU时间为1s/帧,98%的时间是着色器运行时间。
根据苹果API
OpenGL ES 限制了你可以在一个 顶点或片段着色器。 OpenGL ES 规范不需要 实现以在这些限制时提供软件回退 超过;相反,着色器根本无法编译或链接。什么时候 开发您的应用程序,您必须确保在着色器期间不会发生错误 编译,如示例 10-1 所示。
但是从这里我很不明白。他们是否提供软件后备?因为我在编译或链接着色器期间没有错误,但性能很差。我已经评论了几乎所有内容,只留下 2 个纹理查找和定向光计算。我更改了其他函数以仅返回 vec4(0,0,0,0)。
【问题讨论】: