その15 プラットフォーム非依存なコードを作る:サンプルプログラム
C++踏み込み編その15「プラットフォーム非依存なコードを作る」で説明した内容を踏まえたサンプルプログラムです。Win32版及びDirectX版で同じアプリケーションのコードを共有しています:
サンプルスクリーンショット。ちょっと嬉しい(^-^)
同じような描画が出来ています。
○ 環境設定
このサンプルを実行するのに必要なファイルはこちらからダウンロードできます(CPPSmp_No15_Platform.zip)。ダウンロードしたアーカイブを解凍すると次のようなフォルダ構成が出てきます:
具体的な設定方法はC++踏み込み編その15「プラットフォーム非依存なコードを作る」にありますが、改めて説明します。
Visual Studio上で適当な新規Win32プロジェクトを作ります。空のプロジェクトです。プロジェクトが立ち上がったら、一度そのプロジェクトをソルーションから消してしまいます。次に「OXGameWin32」及び「OXGameDX9」という2つのプロジェクトをソルーションに追加します。
次にアーカイブ内のsourceフォルダ内をソルーションのフォルダにコピーします。srcフォルダにあるmainDX9をOXGameDX9フォルダ下に、mainWin32.cppをOXGameWin32フォルダ下に移動させ、それぞれのプロジェクトに追加します。さらにsrc下にある共通コードを2つのプロジェクト共に追加、dx9フォルダ下のファイルはOXGameDX9プロジェクトに、win32フォルダ下のファイルはOXGameWin32プロジェクトにそれぞれ追加します。最後に各プロジェクトのプロパティで追加のインクルードディレクトリとして「../src」とsrcフォルダを指定します。これで両方のプロジェクトでコンパイルができると思います。
src下にある共有コードはプラットフォーム非依存で、クラスは抽象化されています。一方dx9及びwin32フォルダ下にはプラットフォームに依存する実装がそれぞれ格納されています。非依存な環境にプラットフォーム依存なオブジェクトを提供するのがFactoryクラスで、このクラスが唯一プラットフォーム間の依存性を埋めてくれています。