我正在编写一个游戏,显示56个六角形片,以电路板的形状填充屏幕。我正在使用单件渲染类绘制每个部件,当调用它来绘制一个部件时,根据传入的坐标从6个点创建一个路径。此路径用纯色填充,然后用59x59 png填充alpha到白色渐变覆盖在图纸上,使图案看起来更加闪亮。注意我目前正在使用Core Graphics。
我的第一个想法是,每次绘制时创建一个路径都是昂贵的,似乎我可以以某种方式执行此操作然后重复使用它,但我不确定最佳方法。当我看到Shark的瓶颈时,看起来png的绘图是这个过程中最费力的部分。我试过渲染png叠加层或者只是渲染没有叠加层的路径,并且两者都给了我一些帧增益,尽管删除png叠加层会产生最多的帧。
我目前的想法是,在启动时,我应该渲染6条路径(我有每个颜色1个)并用png覆盖它们然后存储这些碎片的图像,然后每次需要时重新绘制碎片。是否有一种有效的机制来存储你曾经绘制过的东西并重新绘制它?这听起来有点像我会经常碰到整个绘图pngs,但也许有一种不那么费力的方法做类似的事情......
非常感谢任何建议。 谢谢!
答案 0 :(得分:1)
一般想法:
答案 1 :(得分:1)
如果你真的需要速度,你必须采用OpenGL路线。如果你想混合使用OpenGL和Core Animation,要小心它们会发生冲突。
如果你没有做太多的事情,那么OpenGL很痛苦。听起来你可以使用Core Animation并使每个tile成为一层。除非您更改某些内容,否则CA不会再次调用重绘,因此您应该只需移动该图层而不会受到重创。另请注意,CA将图层存储在纹理内存中,因此它应该更快。答案 2 :(得分:1)
其他人提到你应该使用OpenGL。以下是专门针对iPhone的精彩介绍:OpenGL ES from the Ground Up: Table of Contents
答案 3 :(得分:1)
答案 4 :(得分:1)
您可能还想查看cocos2d。它似乎比我在测试中使用CoreAnimation快得多,并为游戏提供了许多有用的东西。