我正在使用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从更大的纹理页面创建的图像列表。
由于 富
答案 0 :(得分:1)
破解打开仪器并分析您的代码。看起来你正在绘制一个UIView,它们并没有真正针对游戏进行优化。由于UIViews是图层支持的,因此drawAtPoint:需要在屏幕上显示之前多次绘制图像(到屏幕外缓冲区)。
话虽如此,UIImage并非真正专为游戏而设计。关于成为UIKit的一部分有很多开销。你真的不想拥有数百个。
速度的大致顺序(从最慢到最快):