我的场景是渲染一个五线谱,每个音符是多个精灵组成,我现在打开一个简单的五线谱我的顶点数都有1290左右,GL call的次数在100左右,如果打开复杂的曲谱顶点数达到1600左右,GL Call的次数有110左右,这样导致我的帧率不是很稳定,画面有卡顿的问题。
请问大家一般用什么方法介绍顶点数和Call的次数?
或者有什么办法让我的帧数稳定在60.
我的场景是渲染一个五线谱,每个音符是多个精灵组成,我现在打开一个简单的五线谱我的顶点数都有1290左右,GL call的次数在100左右,如果打开复杂的曲谱顶点数达到1600左右,GL Call的次数有110左右,这样导致我的帧率不是很稳定,画面有卡顿的问题。
请问大家一般用什么方法介绍顶点数和Call的次数?
或者有什么办法让我的帧数稳定在60.
尽量batch,小图打到一张大图里。
你的意思是尽量少用组合?
把组合后的图合并在一起,这样就会减少顶点的数量和gl call的次数?
RenderTeture 绘制成一张纹理,以后draw一次就好
你的意思是将组合后的精灵,用RenderTeture合成一张纹理?我测试过,verts和calls次数竟然没有减少,是不是我使用有问题?
同一张纹理是batch的前提。使用了同一张纹理后,还要保证他们的绘制是相邻的才能自动batch。如果绘制的命令不相邻,那么得自己调用SpriteBatchNode。
还请教一个问题,抛开其他因素,gl verts和gl call,优化后者的数字,是不是效果比较明显?
如果能降下来的话,性能应该会有明显提高的。
我请教一个问题,如果不是相连的,怎么手动做autobatch,我现在发现我有一些是不相连但是用的同一个纹理,发现gl call多次,我把它改成相连就降下来了。
那就得手动batch了,用SpriteBatchnode。
@minggo SpriteBatchNode也得相连吧,下面是引擎对SpriteBatchNode的说明。
说明只是说需要都是Sprite,没说需要相连啊。
子节点都是Sprite,都挂在同一个SpriteBatchNode上,用的同一个texture,就等于是相连啊,command填充到renderqueue的顺序就是节点遍历的顺序。