2009-06-17 24 views
1

私はボードの形で画面を満たす56の六角形の部分を表示するゲームを書いています。私は現在、ピースを描画するために呼び出されたときに渡された座標に基づいて6ポイントからパスを作成するシングルトンレンダリングクラスを使用して各パーツを描画しています。このパスは無地の色で塗りつぶされ、白い勾配が図面上にオーバーレイされ、ピースに光沢のある外観が与えられます。私は現在Core Graphicsでこれをやっています。iPhoneで私の2D図面を最適化するのに助けが必要

私の最初の考えは、私が描くたびにパスを作成するのはコストがかかり、何とかこれを一度やり直してから再利用できるように思えますが、これに対して最善の方法は不明です。 Sharkのボトルネックを見ると、PNGの描画がプロセスの最も課金的な部分であるように見えます。私はpngオーバーレイをレンダリングするか、オーバーレイなしでパスをレンダリングしようとしましたが、どちらもフレームゲインを得ていますが、pngオーバーレイを削除するとほとんどのフレームが得られます。

私の現在の考えは、起動時に6つのパス(私が持っている各色の1つにつき1つ)をレンダリングし、それらをpngでオーバーレイしてから、これらのピースのイメージを格納し、それら。あなたが一度描いたものを保存してそれを再描画するためのエフェクティブなマカニズムがありますか?まあまあ、私は全体の図面PNGsに再び頻繁に実行するだろうと思うちょうど同じことを行う以下の課税方法です...

何か提案が大歓迎です。 ありがとう!

答えて

1

あなたはCGLayerまたはCALayerを試してみるかもしれません。

+0

ありがとうございます! 「CGLayerオブジェクトを使用するとパフォーマンスが向上します。特に、同じ縮尺と向きで繰り返しスタンプする図面をキャプチャする必要がある場合は、パフォーマンスを向上させることができます。" – Skyler

1

一般的な思考:iPhone上の

  • ゲームのプログラミングは、通常、OpenGLを必要とします。コアグラフィックスはやや簡単ですが、OpenGLは速度を最適化しています。
  • この「光沢のある外観」を可能な限りテクスチャにあらかじめレンダリングします(Photoshopで行います)。アルファブレンドは、パフォーマンス上、hellです。
  • PVRTC(これもtutorial)は、iPhoneのGPUの製造元で使用されている形式で試してみることもできます。そして再び、これはボトルネックがどこにあるかによって状況を悪化させる可能性があります。
1

本当にスピードが必要な場合は、OpenGLルートに移動する必要があります。 OpenGLとCore Animationを混在させたい場合は、矛盾する可能性があるので注意してください。

OpenGLはそれほど多忙なことがなければ痛みです。 Core Animationを使用して、各タイルをレイヤーにすることができるようです。あなたが何かを変更しない限り、CAは再描画を再度呼び出さないので、大ヒットせずにそのレイヤーを移動するだけで済みます。また、CAはレイヤーをテクスチャメモリに格納するので、はるかに高速になるはずです。

1

cocos2dもご覧ください。私のテストでCoreAnimationを使用するよりもはるかに速くて、ゲームに役立つものがたくさんあります。

+0

ええ、私は次のプロジェクトで試してみる予定です。これは実際には現在のプロジェクトの終わり近くにあり、パーツが許容できないほど遅れていることに気付き始めました。 – Skyler

関連する問題