我正在使用UIImage渲染一个32x32块的游戏地图。代码如下
for( int x = 0; x < rwidth; ++x)
{
for(int y = 0; y < rheight; ++y)
{
int bindex = [current_map GetTileIndex:x :y];
CGPoint p;
p.x = x * tile_size_x;
p.y = y * tile_size_x;
[img_list[bindex] drawAtPoint:p];
}
}这最终渲染了大约150个瓦片。我的问题是,当我运行这段代码时,我的渲染时间降到了每秒2-3帧。
我认为iPhone是填充绑定的,但是如果我强制bindex =1(即渲染相同的块150次),那么我就会得到完整的帧率。
我不敢相信从不同的UIImages渲染会如此昂贵。
谁能告诉我我哪里做错了..。
哦,我忘了提我的图片列表了,这个图片列表是用CGImageCreateWithImageInRect从一个更大的纹理页面创建的。
谢谢Rich
发布于 2009-04-13 18:09:45
打开Instruments并分析您的代码。看起来你正在绘制一个UIView,而且它们并没有真正针对游戏进行优化。因为UIViews是有层支持的,所以drawAtPoint:需要多次绘制图像(到屏幕外的缓冲区)才能显示在屏幕上。
话虽如此,UIImage实际上并不是为游戏设计的。作为UIKit的一部分,有很多开销。你并不是真的想拥有成百上千个这样的人。
以大约的速度顺序(从最慢到最快):
如果你有几个大的images)
),则通常使用tiles/images)
https://stackoverflow.com/questions/744327
复制相似问题