Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト
Visual Studio 2005
MSDN Home > Visual Studio > Visual Studio 2008 Express Edition > 学習情報 > XNA > 第 03 回 - コラム
ホーム Web インストール 製品の特徴 製品の機能 サポート 前のバージョン
XNA で作る、あなただけのマインスイーパ

XNA Framework 第 03 回 - コラム

赤坂玲音

   

フルスクリーン

Xbox360 のゲームは、常にゲーム画面がスクリーン全体に描画されます。しかし Windows PC 用のゲームは、デフォルトで SVGA に相当する 800 × 600 のゲーム画面をウィンドウ上に描画します。ゲームにとって、ウィンドウの存在は重要なものではありません。むしろ、システム的な画面要素を排除してゲームの世界に集中できる環境を提供したいものです。

そこで、市販されている多くのゲームは画面を切り替えてスクリーン全体にゲーム画面を表示するフルスクリーンモードを備えています。XNA Framework で開発するゲームも、ウィンドウのサイズを変更したり、フルスクリーンモードに切り替えることができます。

まず最初に、スクリーン全体の解像度とゲーム画面の解像度の関係を理解する必要があります。ゲームを描画しているディスプレイの解像度を取得するには GraphicsDevice クラスの DisplayMode プロパティを使います。

■ GraphicsDevice クラス DisplayMode プロパティ

public DisplayMode DisplayMode { get; }

このプロパティは、ゲームを描画するディスプレイの状態を提供する Microsoft.Xna.Framework.Graphics.DisplayMode 構造体の値を返します。

■ Microsoft.Xna.Framework.Graphics.DisplayMode 構造体

[SerializableAttribute]
public struct DisplayMode

この構造体の、Width プロパティから幅を、Height プロパティから高さを取得することができます。

■ DisplayMode 構造体 Width プロパティ

public int Width { get; }

■ DisplayMode 構造体 Height プロパティ

public int Height { get; }

これらのプロパティが返す値は、ゲーム画面の解像度ではなく、ゲームが描画されているスクリーン全体の幅と高さです。ゲーム画面が描画されている幅と高さは、第1回でもご説明した GameWindow クラスの ClientBounds プロパティから取得できます。

■ GameWindow クラス ClientBounds プロパティ

public virtual abstract Rectangle ClientBounds { get; }

Xbox360 では、ゲーム画面の幅と高さがスクリーンの幅と高さに一致します。しかし、Windows PC のウィンドウ上で実行されているゲームは異なります。通常、ゲーム画面はスクリーンよりも小さくなるでしょう。

Windows PC でフルスクリーンモードに切り替える方法は簡単です。生成した GraphicsDeviceManager オブジェクトの IsFullScreen プロパティを true に変更することで、フルスクリーンに切り替えることができます。

■ GraphicsDeviceManager クラス IsFullScreen プロパティ

public bool IsFullScreen { get; set; }

このプロパティの値が true に設定されると、ゲームを描画しているディスプレイの解像度が変更されフルスクリーンモードになります。デフォルトの設定の場合、ディスプレイが 800 × 600 の解像度に切り替わり、ゲーム画面がスクリーン全体に描画されるでしょう。ディスプレイの状態は、ゲームを終了すると元に戻ります。

解像度の変更

ゲームの解像度をデフォルトのものではなく、VGA サイズやフルハイビジョンなど、特定のサイズに固定したい場合もあるでしょう。ゲーム画面の解像度の変更は、ゲームを起動する前に GraphicsDeviceManager クラスの PreferredBackBufferWidth プロパティに幅を、PreferredBackBufferHeight プロパティに高さを設定すると便利です。

■ GraphicsDeviceManager クラス PreferredBackBufferWidth プロパティ

public int PreferredBackBufferWidth { get; set; }

■ GraphicsDeviceManager クラス PreferredBackBufferHeight ロパティ

public int PreferredBackBufferHeight { get; set; }

これらのプロパティには、最も好ましい解像度の幅と高さを設定します。 GraphicsDeviceManager は、指定された解像度の GraphicsDevice を生成します。Windows PC の場合は、ウィンドウのサイズも自動的に解像度に合わせられます。フルスクリーンでは、システムが対応していない場合、最も近い解像度に合わせられます。

正確には、これらのプロパティに設定するのは最も好ましいバッファの解像度です。通常、ゲームのような複雑で高速な描画処理が要求されるアプリケーションでは、画面に直接描画するのではなく、1 枚の絵が完成するまでメモリ上のバッファに描画します。このバッファは、オフスクリーンなどとも呼ばれ、画面上に表示されることのない仮想的なディスプレイだと考えてください。

描画処理が終了し、1 枚の絵が完成した時点で、バッファを画面に表示するという仕組みになります。こうすることによって、描画の工程が見えてしまったり、高速に画面を塗り替える過程で発生するちらつきなどを防止することができます。



Top of Page Top of Page
Visual Studio 2008 Express

Microsoft