差分

ナビゲーションに移動 検索に移動

リセットマラソン

3,433 バイト除去, 2018年2月7日 (水) 04:52
ページの作成:「'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセッ...」
RenderTargetUsage列挙体は、グラフィックデバイス([[MonoGame/クラスライブラリ/GraphicsDeviceクラス|GraphicsDeviceクラス]])に新たなレンダリングターゲット([[MonoGame/クラスライブラリ/RenderTarget2Dクラス|RenderTarget2Dクラス]])を設定したとき、そのレンダリングターゲットの[[データ]]をどのように処理するかを指定するのに使用する列挙体である。'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセットしまくることをいう。
== 名前空間 ==* [[MonoGame/クラスライブラリ/Microsoft.Xna.Framework.Graphics名前空間|Microsoft.Xna.Framework.Graphics名前空間]]リセットマラソンはウィザードリィなどで有名で、高いボーナスポイントが得られるまで延々とキャラクター作成を繰り返し数時間を擁するなどということもあった。
== 構文 == public enum RenderTargetUsage == フィールド =={| class="wikitable"|+! 値! 概要|-| DiscardContents| 常にレンダリングターゲットのデータを削除する。|-| PlatformContents| プラットフォームに応じて扱いを変える。使うな危険。|-| PreserveContents| 常にレンダリングターゲットのデータを保持する。|} == 備考 ===== PreserveContentsは遅い ===PreserveContentsはVRAM容量が少ない環境ではメインメモリへの保存と復元が発生するため絶望的なほど遅くなる。[[PC]]ではまず問題になることはないようだだが、一部の[[スマホ]]では絶望的な速度になるようだ。なるべくDiscardContentsを使ったほうが良さそうだ。 === DiscardContentsの注意点 ===GraphicsDeviceが最初から持っているレンダリングターゲット(DirectXでいうプライマリサーフェイス)に相当するものはDiscardContentsに設定されている。DiscardContentsの欠点はGraphicsDevice.SetRenderTargetするたびに破棄される点であり、レンダリング系APIの呼出順序を間違えると残念なことになる。 たとば以下のコードは正常に動作しない。<source lang="csharp"> protected override void Draw(GameTime gameTime) { // (1)プライマリサーフェイスを塗りつぶす _graphics.GraphicsDevice.Clear(Color.CornflowerBlue);  // (2)レンダリングターゲットを切り替える _graphics.GraphicsDevice.SetRenderTarget(new RenderTarget2D(GraphicsDevice, 128, 128));  // (3)レンダリングターゲットをプライマリサーフェイスに戻す // このときプライマリサーフェイスはDiscardContents設定なので内容がクリアされ(1)の塗りつぶしが無かったことにされる。 _graphics.GraphicsDevice.SetRenderTarget(null);  base.Draw(gameTime); }</source> DiscardContentsの場合は以下のような呼出順序で書かなければならない。<source lang="csharp"> protected override void Draw(GameTime gameTime) { // (1)レンダリングターゲットを切り替える _graphics.GraphicsDevice.SetRenderTarget(new RenderTarget2D(GraphicsDevice, 128, 128));  // (2)レンダリングターゲットをプライマリサーフェイスに戻す(と同時にまっさらになる) _graphics.GraphicsDevice.SetRenderTarget(null);  // (3)プライマリサーフェイスを塗りつぶす _graphics.GraphicsDevice.Clear(Color.CornflowerBlue);  base.Draw(gameTime); }</source> == 関連項目 ==* [[MonoGame/クラスライブラリ/GraphicsDeviceクラス|GraphicsDeviceクラス]]** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/SetRenderTargetメソッド|SetRenderTargetメソッド]]** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/SetRenderTargetsメソッド|SetRenderTargetsメソッド]]** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/GetRenderTargetsメソッド|GetRenderTargetsメソッド]]* [[MonoGame/クラスライブラリ/RenderTarget2Dクラス|RenderTarget2Dクラス]]* [[MonoGame/クラスライブラリ/RenderTargetCubeクラス|RenderTargetCubeクラス]]* [[MonoGame/クラスライブラリ/CubeMapFace列挙体|CubeMapFace列挙体]]* [[MonoGame/クラスライブラリ/RenderTargetBinding構造体|RenderTargetBinding構造体]] [[category: MonoGame]]最近のiOSやAndroid向けのスマホゲームでのリセットは「アプリを消して再インストール」が基本となるため、リセマラ大前提の作りにするとアプリストアにおけるダウンロード数が伸びる(Androidではデータ全消しでもいける)。ただし、あまりの面倒臭さに利用者がゲーム本編を始めるまえに離れる原因にもなる両刃の剣である。
匿名利用者

案内メニュー