1

iOS デバイス用のゲームを作成しようとしており、独自のイメージ レンダラー クラスを使用して画面にイメージを描画できるようにしたいと考えています。

フレームごとに画像を描画する Microsoft XNA で使用されている方法と同様の方法を探しています。

私は以前にobjective-cの経験があり、C#の経験も豊富です(これは別の球技であることは理解しています)が、CoreGraphicsがC#のGrapicsオブジェクトのようになると半分期待していました。ただし、画面への描画に頭を悩ませることはできません。私が見つけることができる唯一の方法は、彼の drawRect メソッドをオーバーライドすることですが、私は異なる時間に異なるものを描画し、動的にする必要があるため、それは役に立ちません。

コア グラフィックスを使用して各画像を描画することを考えました。また、描画中の各画像の各ピクセルに対して 1 px の四角形を描画する別の方法も考えましたが、それがどの程度うまく機能するかはわかりません。

だから私は助けが必要です: - 別の画像レンダラークラスのメソッドから画像(または長方形)を描画します。

  • マイクロソフトの xna と同様に、各フレームに画像を描画する方法。

ご協力いただきありがとうございます。長い投稿についてお詫び申し上げます。

4

2 に答える 2

2

別の画像レンダラークラスのメソッドから画像(または長方形)を描画します。

これは、UIGraphicsBeginImageContextおよびUIGraphicsEndImageContextコードブロックを使用して実行できます。テクニックは基本的に、画像コンテキストを開始し、描画コードを使用し、画像コンテキストからUIImage参照を取得し、画像コンテキストを終了することです。

たとえば、「NSString描画機能を使用してテキストからUIImageを作成するにはどうすればよいですか」という質問に対する回答は、文字列から画像を作成する方法を示しています。

于 2012-09-22T22:36:51.347 に答える
1

1)すべての「同期」部分、つまり画面が更新されるたびに新しいフレームを描画する場合はCADisplayLink、フレームを描画する必要があるたびに呼び出すメソッドを指定できるクラスを使用する必要があります。

呼び出されたメソッドは、CADisplayLinkオブジェクトをパラメーターとして渡します。これにタイムスタンプを照会して、描画する必要のあるフレームを知ることができます。たとえば、ボールが動いているゲームの場合、現在のフレームのタイムスタンプを最後に描画されたフレームのタイムスタンプと比較して、経過時間を知ることができます。これにより、ボールの速度と最後の位置がわかるようになります。描画する必要がある新しい位置を簡単に決定できます。

2)残りの部分、つまりすべての描画部分については、OpenGLを使用することを選択した場合(この場合はGLKitコードを簡単にするために見てください)を除いて、CoreGraphicsを使用して自分で低レベルの描画を行うことができます。このために、 Quartz 2Dプログラミングガイドで必要なものがすべて見つかります。これには、ピクセルベジェパス/ベクターグラフィックスの描画方法や、ビットマップコンテキストでのオフスクリーン描画方法が含まれます。

于 2012-09-22T22:32:31.027 に答える