我有一个使用大量片段着色器的应用程序。着色器都在应用程序启动时编译(在后台队列中)。我最近在 iPhone 5S 上测试了该应用程序,一切正常,但着色器需要更长的时间来编译。在 5 上,编译需要 0.8 秒。在 5S 上,需要 10 多秒。有谁知道这里发生了什么?
在 iPhone 5(运行 iOS 7.0.2)上:
2013-10-16 16:53:41.949 Socialcam[1096:1603] -[EffectCaptureController compileShaders]: start
2013-10-16 16:53:42.753 Socialcam[1096:1603] -[EffectCaptureController compileShaders]: end
在 iPhone 5S(运行 iOS 7.0.2)上:
2013-10-16 16:46:52.856 Socialcam[9757:1603] -[EffectCaptureController compileShaders]: start
2013-10-16 16:47:03.303 Socialcam[9757:1603] -[EffectCaptureController compileShaders]: end
编辑更多信息
仔细研究这个问题,iPhone 5S 似乎无法像以前的设备那样处理那么多制服。这实际上不是编译问题。对于我的一个着色器,链接阶段挂起 10 秒,然后失败。对于所有其他着色器,没有问题,编译和链接只需几毫秒。有问题的着色器使用 768 个 vec4 的统一数组,以及三个纹理。如果我删除任何纹理或减小数组的大小,它会毫无问题地链接。