给定NSMutableArray
动态CGPoint
,从array[0]
到array[1]
,array[1]
到{的最快和最有效的方法是什么? {1}}等?我应该用C或C ++重写我的函数以获得更好的性能吗?目前,当阵列中有超过20个点时,我的帧速率会受到严重影响。我正在使用cocos2d v2.0.0-rc2,我目前有:
array[2]
答案 0 :(得分:2)
这里不需要使用迭代。 Cocos2d有一个名为ccDrawPoly()
的内置函数。您可以像这样使用它:
CGPoint *verts = malloc(sizeof(CGPoint) * [points count]);
for (int i = 0; i < [points count]; i++) {
verts[i] = [[points objectAtIndex:i] CGPointValue];
}
ccDrawPoly(verts, [points count], NO);
free(verts);
显然,如果将CGPoints存储在C数组中而不是从NSValues中装箱和取消装箱,你将获得更好的性能,但如果你真的需要可变性,那就无法帮助。
至于ccDrawPoly()
的第三个参数,将其设置为YES
将连接数组的起点和终点,形成一个闭合的多边形,而使用NO
只会产生一个一堆开放的线条。