〓 Admin 〓
製作しているゲームの近況や私事など
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2Dゲームで画面を揺らそうと思った時、一時的にテクスチャへ描画し、それを動かして描画するのが一般的ですよね。
XNAでもそのような処理は実装されているのですが、なかなか仕様が分かりづらかったので書き留めておきます。
XNAでもそのような処理は実装されているのですが、なかなか仕様が分かりづらかったので書き留めておきます。
テクスチャへの書き込みの指定はGameクラスが持っているGraphicDeviceから行います。
targetをRenderTarget2Dクラスとして、
manager.GraphicsDevice.SetRenderTarget(target);
と書くとそのフレームの描画がtargetに対して行われます。
ここで注意すべきなのは、この宣言だけではテクスチャに書き込んだだけでウィンドウに表示されないことです。
ウィンドウにテクスチャを描画するために描画終了後に
Game.GraphicsDevice.SetRenderTarget(null);
sprite.Begin();
sprite.Draw(target, TexturePosition,Color.White);
sprite.End();
としてテクスチャを描画しましょう。
ちなみにspriteはSpriteBatchクラス、TexturePositionはVector2クラスです。
ここでのポイントは最初の行でレンダ対象をnullにしていることですね。
このメソッドの引数をnullにするとウィンドウへの直接描画になります。
レンダ対象になっているテクスチャはDrawメソッドで描画できないので(当然といえば当然ですが。)このように切り替え処理を挟む必要があります。
これでグラフィックをテクスチャに書きこんで表示できるようになりました。
TexturePositionを0,0からずらすと画面ごとずらせているのがわかるかと思います。
そうそう、この処理は全部の描画が終わってから行ってください。
GameComponentを利用している場合は注意が必要かと思います。
では今回はここまで。
targetをRenderTarget2Dクラスとして、
manager.GraphicsDevice.SetRenderTarget(target);
と書くとそのフレームの描画がtargetに対して行われます。
ここで注意すべきなのは、この宣言だけではテクスチャに書き込んだだけでウィンドウに表示されないことです。
ウィンドウにテクスチャを描画するために描画終了後に
Game.GraphicsDevice.SetRenderTarget(null);
sprite.Begin();
sprite.Draw(target, TexturePosition,Color.White);
sprite.End();
としてテクスチャを描画しましょう。
ちなみにspriteはSpriteBatchクラス、TexturePositionはVector2クラスです。
ここでのポイントは最初の行でレンダ対象をnullにしていることですね。
このメソッドの引数をnullにするとウィンドウへの直接描画になります。
レンダ対象になっているテクスチャはDrawメソッドで描画できないので(当然といえば当然ですが。)このように切り替え処理を挟む必要があります。
これでグラフィックをテクスチャに書きこんで表示できるようになりました。
TexturePositionを0,0からずらすと画面ごとずらせているのがわかるかと思います。
そうそう、この処理は全部の描画が終わってから行ってください。
GameComponentを利用している場合は注意が必要かと思います。
では今回はここまで。
PR
この記事にコメントする