0

ゲームを開発しています。画面にいくつかのテクスチャを描画したいと思います。spriteBatch を使用して texture2d を描画することで、それを成功裏に達成しました。

問題は、onDraw メソッドにコードを入れた場合にのみテクスチャが表示されることです。onDraw メソッドはタイマーにバインドされているため、何度も実行されます。長方形を一度だけ描きたいです。

コードをコンストラクターに配置すると、長方形は表示されません。コードを onDraw 関数に配置した場合にのみ表示されます。どうすればそれを省略できますか?

4

1 に答える 1

2

XNAでこれを行うための賢明なオプションは実際にはありません。ほとんどのゲームは、フレームごとに画面全体を再描画したいので、XNAはこのように構成されています。(そして、本当に説得力のある理由なしに、これはあなたがあなたのゲームを構築する方法でもあります。)

XNAはダブルバッファリングされています(これをオフにする方法はないと思います)。バックバッファで描画を行い、それをフロントバッファと交換します。画面に直接描画することはありません。

したがって、画面をクリアして各フレームで再描画する必要はありません、そうでない場合は、これら2つのバッファの内容を手動で同期しておく必要があります。そうしないと、ひどいちらつきが発生します。これは努力する価値がありません。

あなた探しているのはメソッドです(代わりに-または-Game.SupressDrawから呼び出してください:override and return )。これにより、その特定のフレームに対して呼び出されるのを防ぎ、バックバッファーがフロントにスワップされるのを防ぎます。したがって、前のフレームは単に画面に表示されたままになります。UpdateBeginDrawfalseDraw

ただし、一般的には、すべてのフレームを単純に描画する方が簡単です。

于 2012-12-08T10:48:24.267 に答える