首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在iPhone上使用UIImage渲染不同的图像时性能很差

为什么我在iPhone上使用UIImage渲染不同的图像时性能很差
EN

Stack Overflow用户
提问于 2009-04-13 15:53:02
回答 1查看 1.1K关注 0票数 1

我正在使用UIImage渲染一个32x32块的游戏地图。代码如下

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-13 18:09:45

打开Instruments并分析您的代码。看起来你正在绘制一个UIView,而且它们并没有真正针对游戏进行优化。因为UIViews是有层支持的,所以drawAtPoint:需要多次绘制图像(到屏幕外的缓冲区)才能显示在屏幕上。

话虽如此,UIImage实际上并不是为游戏设计的。作为UIKit的一部分,有很多开销。你并不是真的想拥有成百上千个这样的人。

以大约的速度顺序(从最慢到最快):

如果你有几个大的images)

  • CALayers (如果你需要精细的动画控制,或者你有大约20到100个tiles/images)

  • OpelGL纹理(大多数游戏应该使用的)

),则通常使用tiles/images)

  • OpelGL

  • UIImage(
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/744327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档