在低端机(4s)等设备上会出现转换shader卡顿0.5s甚至1s的情况。
用unity的性能分析器发现:
在OpenGL中用过Shader的同学们看到下面的函数名字就知道问题所在了
Shader.CreateGPUProgram()
这个函数过程就是创建GLProgram链接Shader的一个过程,在Unity3d中的Shader.Find()是直接创建GLProgram的。
如果是自己去写引擎,GLProgram一般在初始化的时候就会创建完毕,然后用类似GLProgramManager管理。
Unity中的问题我们也可以用这个方法解决,但是Unity提供了简便方法。
点击Editor - Project Setting - Graphics
右侧 Always Included Shaders,把我们需要使用的Shader拖到里面去吧!