私はゲームを構築しており、メインキャラクターの腕はマウスカーソルに追従するので、回転が頻繁に行われます。それを回転させる最善の方法は何でしょうか?SDLを使用して画像を回転させる最も良い方法は?
12
A
答えて
19
のようなライブラリを使用することができます。
は、事前にすべてのあなたのスプライトを回転させます(すべての可能な回転を事前レンダリング)、あなたは他のスプライトのと同じようにそれらをレンダリングします。このアプローチは高速ですが、より多くのメモリとより多くのスプライトを使用します。 @Nick Wiggleが指摘しているように、RotSpriteは、スプライトトランスフォーメーションを生成するための優れたツールです。
リアルタイム回転/ズームを行うにはSDL_gfxのようなものを使用します。 (推奨されない、非常に遅い)
OpenGLモードでSDLを使用し、スプライトをプリミティブにレンダリングし、プリミティブにローテーションを適用します。
オプション3はおそらく、OpenGLを使用する利点のすべてを得るためです。どのようにしてそれをやりたいのかはあなた次第です。また、スプライトを読み込み、SDL_gfxですべての回転計算を実行し、回転したバージョンをメモリ内のSDL_Surfaceに保存することもできます。
編集:あなたのコメントに応じて、LazyfooのSDLチュートリアルをチェックすることをおすすめします。 Specifically, this one about rotation。また、OpenGl function, glRotatef
もあり、あなたのケースでは役立ちます。クイック検索でもthis little tidbitが返ってきました。
2
あなたはいくつかの選択肢を持っているSDLでSDL_gfx
0
SDL_RenderCopyEx()
には、回転、反転、回転中心の追加引数があります。
私はOpenGLルートを探求したいと思っていますが、私はそれを使ったことはありません。ローテーションのチュートリアルを開始するためのウェブサイトに関する推奨事項はありますか? – Justen
私はNeHeからいくつかのコードを見てきましたが、これはイメージに回転を設定するのは非常に面倒です...私はそれを全く理解できません。 – Justen
私は長い間OpenGLを使っていませんでした。あなたのOpenGL固有のローテーションに関する質問は、新しい質問の良い話題かもしれません。あなたは私が与えるよりはるかに良い答えを得ることに縛られています。 –