Jonathan は についてすばらしい説明をしてくれましたが、 a を aとしてRenderTargetUsage
使用することを含む、元の質問に関していくつかのことを明確にしたいと思います。RenderTarget2D
Texture2D
簡単に言えば、RenderTargetUsage
デバイス上でレンダー ターゲットとして設定されたときのサーフェスの動作を制御します。内容を保存するように設定されていない場合は、クリアされます。Xbox 360 では、これはハードウェアの癖として発生します (パフォーマンスのため)。Windows では、設定時にサーフェスをクリアするだけで Xbox 360 に一致するようにエミュレートされます。
ただし、テクスチャとして使用している場合、これは関係ありません。以前のコンテンツを失うことなく、1 つのサーフェスに複数回レンダリングする (毎回デバイスに設定する) 場合にのみ問題になります。
ゲームの開始時にレンダー ターゲットとして 1 回だけ設定した場合、再度レンダー ターゲットとして設定されることはないため、保存設定が何であっても問題ありません。
気にするのは、IsContentLost
プロパティ ( MSDN ) またはContentLost
イベント ( MSDN ) です。これらは、レンダー ターゲットにレンダリングしたコンテンツが失われた場合に設定または発生します (デバイスの変更が原因で、たとえばフルスクリーンになる)。
フレームごとにレンダー ターゲットを再レンダリングする場合は、コンテンツの損失を確認する必要はありません。ただし、ゲームの開始時にレンダー ターゲットを作成し、それを引き続き使用する場合は、それらが作成されたフレームの後に失われていないことを確認する必要があります。
(呼び出しの途中でコンテンツが失われることを心配する必要はないことに注意してくださいDraw
。これはフレーム間でのみ発生する可能性があると確信しています。)