2016-11-12 15 views
0

Begin()が呼び出されたSpriteBatchを受け取り、RenderTargetを変更してBegin()を呼び出すためにEnd()を呼び出すことは可能ですか?再びそれにと同じパラメータが最初に渡されたSpriteBatchを同じパラメータで再起動

答えて

1

どのパラメータが渡されたのか、Begin()のどのオーバーロードが呼び出されたのかを正確に判断することはできません。その呼び出しによって作成された元の状態を再作成することは可能です。

Begin()へのパラメータ、例えばBlendState,DepthStencilStateなどは、GraphicsDeviceに実際に設定されます。したがって、​​から状態情報を読み込んで(保存し)、次の呼び出しでそれを再作成することができます。Begin()

+0

これは私が疑ったものです。 GraphicsDeviceクラスのソースを見る方法はありますか? – GameKyuubi

+0

@GameKyuubi、XNAはクローズソースですが、XNAのオープンソースでクロスプラットフォームのポートであるMonoGameがあります。 GraphicsDeviceは、必要なすべての情報を含むパブリックプロパティを公開するため、ソースを厳密に複製する必要はありません(私の答えのドキュメントのリンクを参照してください) – CoolBots

+0

はい、私はSpriteBatchクラスを解析していて、GraphicsDeviceをGraphicsDevice.SetRenderTarget()に関して、私が調査したいと思う方法で。私は限界と私は複数のSpriteBatchesと複数のRenderTargetsを処理するときに使用する必要があるコールの順序を把握しようとしています。特に、SpriteBatchがBegin()が呼び出されたときにSetRenderTargetが設定するプロパティは、 SpriteBatchがアクティブな間にRenderTarget – GameKyuubi

関連する問題