1

画面いっぱいに 56 個の六角形のピースをボードの形で表示するゲームを書いています。私は現在、ピースを描画するために呼び出されると、渡された座標に基づいて 6 つのポイントからパスを作成するシングルトン レンダリング クラスを使用して各ピースを描画しています。作品に光沢のある外観を与えるために、図面の上に白いグラデーションがオーバーレイされます。現在、Core Graphics でこれを行っていることに注意してください。

私の最初の考えは、描画するたびにパスを作成するのはコストがかかり、これを一度実行してから再利用できるように見えるということですが、これに対する最善のアプローチはわかりません. Shark のボトルネックを見ると、png の描画がプロセスの中で最も負担が大きい部分のようです。pngオーバーレイをレンダリングするか、オーバーレイなしでパスをレンダリングするだけで試してみましたが、両方ともフレームゲインがいくらか得られますが、pngオーバーレイを削除するとほとんどのフレームが得られます.

私の現在の考えでは、起動時に 6 つのパス (私が持っているカラーピースごとに 1 つ) をレンダリングし、それらを png でオーバーレイしてから、これらのピースの画像を保存し、必要なたびにピースを再描画する必要があります。一度描いたものを保存して再描画するための効率的なメカニズムはありますか? 描画png全体に頻繁に遭遇するように思えますが、同様のことを行う負担の少ない方法があるかもしれません...

どんな提案でも大歓迎です。ありがとう!

4

5 に答える 5

1

一般的な考え:

  • iPhoneでのゲームプログラミングには通常OpenGLが必要です。Core Graphicsは操作が少し簡単ですが、OpenGLは速度が最適化されています。
  • この「光沢のある外観」を可能な限りテクスチャに事前にレンダリングします(たとえば、プロジェクトに挿入する前にPhotoshopで実行します)。アルファブレンディングはパフォーマンスに大きな影響を及ぼします。
  • たぶん、 PVRTC(このチュートリアルも)を試してみてください。これは、iPhoneのGPUの製造元が使用している形式です。繰り返しになりますが、これはボトルネックがどこにあるかによっては事態を悪化させる可能性があります。
于 2009-06-17T05:24:34.323 に答える
1

本当に速度が必要な場合は、OpenGL ルートを使用する必要があります。OpenGL と Core Animation を混在させたい場合は、競合する可能性があることに注意してください。

OpenGL をあまり使ったことがない場合、OpenGL は苦痛です。Core Animation を使用して、各タイルをレイヤーにすることができるようです。何かを変更しない限り、CA は再描画を再度呼び出すことはありません。そのため、大きな打撃を受けることなく、そのレイヤーを移動するだけでよいはずです。また、CA はレイヤをテクスチャ メモリに格納するため、はるかに高速であることに注意してください。

于 2009-06-17T05:42:41.160 に答える
1

cocos2dも参照してください。私のテストで CoreAnimation を使用するよりもはるかに高速であるように思われ、ゲームに役立つ多くの機能を提供します。

于 2009-06-18T08:46:37.923 に答える
1

OpenGL を使用する必要があると述べている人もいます。これは特に iPhone 向けの優れた紹介です: OpenGL ES from the Ground Up: Table of Contents

于 2009-06-17T07:22:48.713 に答える
1

CGLayerまたはCALayerを試すことができます。

于 2009-06-17T07:27:36.037 に答える