メインメニューを開く

差分

MonoGame/クラスライブラリ/RenderTargetUsage列挙体

59 バイト追加, 2020年9月15日 (火) 02:45
=== DiscardContentsの注意点 ===
DiscardContentsは「GraphicsDeviceDiscardContents設定になっていると「GraphicsDevice.SetRenderTargetするたびに破棄(初期化)される」という特徴がある。この特性があるためレンダリング系APIの呼出順序を間違えると残念なことになる。
<source lang="csharp">
GraphicsDevice.SetRenderTarget(このRenderTargetは初期化される);
</source>
ちなみにGraphicsDeviceが最初から持っているレンダリングターゲット([[DirectX]]でいう[[プライマリサーフェイス]]、SetRenterTarget(null))に相当するものはDiscardContentsに設定されている。)に相当するものは問答無用でDiscardContentsに設定されている。
このため、たとば以下のコードは正常に動作しない。
// (3)レンダリングターゲットをプライマリサーフェイスに戻す
// このときプライマリサーフェイスはDiscardContents設定なので内容がクリアされ(1)の塗りつぶしが無かったことにされる。プライマリサーフェイスは問答無用でDiscardContents設定なので // (2)のレンダーターゲットは影響を受けない。内容はクリアされ(1)の塗りつぶしは無かったことにされる。 // なお、(2)のレンダーターゲットは影響を受けない。
gd.SetRenderTarget(null);