1

私は最近、iOSで2Dスプライトを描画するためのさまざまなテクノロジー(CoreAnimation、UIViews、CGContext、Open GL ES)をいろいろと試しています。CoreAnimationから得た開発時間に対する最高のパフォーマンスなので、(当面は)それに固執します。

ビットマップを表示するには、CALayersを使用します。これは問題なく動作し、OpenGLよりもそれほど遅くはありません。頻繁に繰り返される複数のパターンがあります(これはプラットフォームゲームでは一般的です)。メモリ節約の理由から、保存された画像を複数のCALayerに再利用したいと思います。

それをしてもいいですか?どのように?私は次のようなものを想像します:

  1. ビットマップを任意の形式(UIImage?)でメモリに保存します
  2. UIImageからCGImageRefを取得します
  3. そのビットマップを表示する必要がある各CALayerにCGImageRefを適用します

これは実際には各レイヤーのビットマップへのポインターのみを保存しますか、それとも「Apple-magic」は各CAレイヤーのビットマップのコピーを作成しますか?

ありがとうございました。

4

1 に答える 1

0

これをテストするためのiOSプロジェクトを作成した後、これが私の結論です。

  • コンテンツ(タイプID)をUIImageに設定できます。限目。したがって、タイプIDであるimhoは役に立ちません。UIImageである必要があります。
  • したがって、コンテンツをCGImageRefタイプに設定することはできません(__bridge idを使用する場合)、コンテンツはnilであり、エラーは生成されません(これは、iOSがafaikに基づいているMacOS X 10.6以降で動作するというAppleのドキュメントとは対照的です) 。

CALayerで動作する各タイルビットマップにRAMを使用せずに、タイルを複数回表示する方法は見つかりませんでした。これを行うには、OpenGLESと連携する必要があります。

于 2012-11-18T16:13:04.917 に答える