从cocos2d中的点数组中绘制线条的最有效方法

时间:2012-06-30 18:15:17

标签: objective-c ios cocos2d-iphone opengl-es-2.0

给定NSMutableArray动态CGPoint,从array[0]array[1]array[1]到{的最快和最有效的方法是什么? {1}}等?我应该用C或C ++重写我的函数以获得更好的性能吗?目前,当阵列中有超过20个点时,我的帧速率会受到严重影响。我正在使用cocos2d v2.0.0-rc2,我目前有:

array[2]

1 个答案:

答案 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只会产生一个一堆开放的线条。