「MonoGameで解像度を取得する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
2行目: 2行目:
  
 
たとえばGameクラス(MonoGameにおける[[エントリポイント]]に相当するクラス)で以下のように解像度の設定を行ったとする。
 
たとえばGameクラス(MonoGameにおける[[エントリポイント]]に相当するクラス)で以下のように解像度の設定を行ったとする。
<source lang="csharp">
+
<pre lang="csharp">
            this.GraphicsDeviceManager.IsFullScreen = false;
+
GraphicsDeviceManager.IsFullScreen = false;
            this.GraphicsDeviceManager.PreferredBackBufferWidth = 720 ;
+
GraphicsDeviceManager.PreferredBackBufferWidth = 720 ;
            this.GraphicsDeviceManager.PreferredBackBufferHeight = 1232 ;
+
GraphicsDeviceManager.PreferredBackBufferHeight = 1232 ;
            this.GraphicsDeviceManager.ApplyChanges();
+
GraphicsDeviceManager.ApplyChanges();
</source>
+
</pre>
  
 
これがWindowsやMacで実行した場合は余程のことが無い限り要望した解像度になるだろう。
 
これがWindowsやMacで実行した場合は余程のことが無い限り要望した解像度になるだろう。
 
しかしAndroidなどでは異なる解像度が設定されることがある(詳細は「[[MonoGameで解像度を設定する]]」を参照)。
 
しかしAndroidなどでは異なる解像度が設定されることがある(詳細は「[[MonoGameで解像度を設定する]]」を参照)。
 
実際の解像度は以下のプロパティで取得できる。
 
実際の解像度は以下のプロパティで取得できる。
<source lang="csharp">
+
<pre lang="csharp">
            this.GraphicsDevice.PresentationParameters.BackBufferWidth;
+
GraphicsDevice.PresentationParameters.BackBufferWidth;
            this.GraphicsDevice.PresentationParameters.BackBufferHeight;
+
GraphicsDevice.PresentationParameters.BackBufferHeight;
</source>
+
</pre>
  
 
== 注意点 ==
 
== 注意点 ==

2018年8月28日 (火) 00:49時点における版

MonoGameでは設定を「要望した解像度」と「実際の解像度」が異なり、環境に合わせて近似するベストな解像度が選ばれるようになっている。これはAndroid端末などでは液晶の解像度が事前に決まっており、こちらの要望は基本的に無視されるためである。

たとえばGameクラス(MonoGameにおけるエントリポイントに相当するクラス)で以下のように解像度の設定を行ったとする。

GraphicsDeviceManager.IsFullScreen = false;
GraphicsDeviceManager.PreferredBackBufferWidth  =  720 ;
GraphicsDeviceManager.PreferredBackBufferHeight = 1232 ;
GraphicsDeviceManager.ApplyChanges();

これがWindowsやMacで実行した場合は余程のことが無い限り要望した解像度になるだろう。 しかしAndroidなどでは異なる解像度が設定されることがある(詳細は「MonoGameで解像度を設定する」を参照)。 実際の解像度は以下のプロパティで取得できる。

GraphicsDevice.PresentationParameters.BackBufferWidth;
GraphicsDevice.PresentationParameters.BackBufferHeight;

注意点

なお、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。

  • Gameクラスのコンストラクタ内で呼び出しても無反応。
  • 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる。
  • 暗黙的にGameクラスのbase.Initialize()の中でも実行されている模様
    base.Initializeメソッドを呼び出した時点でゲームループが走り出すので注意。

関連項目

参考文献