2009-07-26 7 views

答えて

19

のようなライブラリを使用することができます。

  1. は、事前にすべてのあなたのスプライトを回転させます(すべての可能な回転を事前レンダリング)、あなたは他のスプライトのと同じようにそれらをレンダリングします。このアプローチは高速ですが、より多くのメモリとより多くのスプライトを使用します。 @Nick Wiggleが指摘しているように、RotSpriteは、スプライトトランスフォーメーションを生成するための優れたツールです。

  2. リアルタイム回転/ズームを行うにはSDL_gfxのようなものを使用します。 (推奨されない、非常に遅い)

  3. OpenGLモードでSDLを使用し、スプライトをプリミティブにレンダリングし、プリミティブにローテーションを適用します。

オプション3はおそらく、OpenGLを使用する利点のすべてを得るためです。どのようにしてそれをやりたいのかはあなた次第です。また、スプライトを読み込み、SDL_gfxですべての回転計算を実行し、回転したバージョンをメモリ内のSDL_Surfaceに保存することもできます。

編集:あなたのコメントに応じて、LazyfooのSDLチュートリアルをチェックすることをおすすめします。 Specifically, this one about rotation。また、OpenGl function, glRotatefもあり、あなたのケースでは役立ちます。クイック検索でもthis little tidbitが返ってきました。

+0

私はOpenGLルートを探求したいと思っていますが、私はそれを使ったことはありません。ローテーションのチュートリアルを開始するためのウェブサイトに関する推奨事項はありますか? – Justen

+0

私はNeHeからいくつかのコードを見てきましたが、これはイメージに回転を設定するのは非常に面倒です...私はそれを全く理解できません。 – Justen

+0

私は長い間OpenGLを使っていませんでした。あなたのOpenGL固有のローテーションに関する質問は、新しい質問の良い話題かもしれません。あなたは私が与えるよりはるかに良い答えを得ることに縛られています。 –

2

あなたはいくつかの選択肢を持っているSDLでSDL_gfx

0
SDL_RenderCopyEx() 

には、回転、反転、回転中心の追加引数があります。