「MonoGame/クラスライブラリ/RenderTargetUsage列挙体」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) |
||
| (同じ利用者による、間の3版が非表示) | |||
| 30行目: | 30行目: | ||
=== DiscardContentsの注意点 === | === DiscardContentsの注意点 === | ||
DiscardContents設定になっていると「GraphicsDevice.SetRenderTargetするたびに破棄(初期化)される」という特徴がある。この特性があるためレンダリング系APIの呼出順序を間違えると残念なことになる。 | |||
<source lang="csharp"> | <source lang="csharp"> | ||
GraphicsDevice.SetRenderTarget(このRenderTargetは初期化される); | GraphicsDevice.SetRenderTarget(このRenderTargetは初期化される); | ||
</source> | </source> | ||
ちなみにGraphicsDeviceが最初から持っているレンダリングターゲット([[DirectX]]でいう[[プライマリサーフェイス]]、SetRenterTarget(null) | ちなみにGraphicsDeviceが最初から持っているレンダリングターゲット([[DirectX]]でいう[[プライマリサーフェイス]]、SetRenterTarget(null))に相当するものは問答無用でDiscardContentsに設定されている。 | ||
このため、たとば以下のコードは正常に動作しない。 | このため、たとば以下のコードは正常に動作しない。 | ||
| 50行目: | 50行目: | ||
// (3)レンダリングターゲットをプライマリサーフェイスに戻す | // (3)レンダリングターゲットをプライマリサーフェイスに戻す | ||
// | // プライマリサーフェイスは問答無用でDiscardContents設定なので | ||
// | // 内容はクリアされ(1)の塗りつぶしは無かったことにされる。 | ||
// なお、(2)のレンダーターゲットは影響を受けない。 | |||
gd.SetRenderTarget(null); | gd.SetRenderTarget(null); | ||