Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。
アプリケーション ウィンドウの作成後、最初に作成するオブジェクトは、DirectDraw オブジェクトである。これは、アプリケーションの協調レベルの設定に必要である。また、この DirectDraw オブジェクトを使って、シーンの表示や、アプリケーションのレンダリング デバイスのレンダリング ターゲットとして使用するサーフェスを作成する。
サンプル Triangle は、次のコードに示すように、DirectDraw オブジェクトを作成して初期化の実行を開始する。
Private Sub InitDDraw() ' DirectDraw オブジェクトを作成してアプリケーションを設定する。 ' 協調レベル。 Set g_dd = g_dx.DirectDrawCreate("")
上記のコードは、DirectDraw グローバル関数 DirectDrawCreate を呼び出して、DirectDraw オブジェクトを作成する。空の文字列を渡して、DirectDraw オブジェクトをアクティブなディスプレイ ドライバ用に作成するよう関数に要求する。3D 専用ハードウェアなどの、GDI をサポートしないハードウェアに対しては、適切なドライバのグローバル ユニーク識別子 (GUID) を明示的に指定する必要がある。
サンプル Triangle は、DirectDraw7.SetCooperativeLevel メソッドを呼び出して、協調レベルを設定する。協調レベルの設定により、アプリケーションが、フルスクリーン モードまたは標準ウィンドウ内のどちらでレンダリングするかをシステムに指示する (ウィンドウ内にレンダリングできないハードウェアも存在することに注意する。そうしたハードウェアは、DirectDraw7.GetCaps を呼び出して、DDCAP2_CANRENDERWINDOWED 能力フラグが存在しないことをチェックして、検出することができる)。上記のコードは、2 番目のパラメータに DDSCL_NORMAL フラグを指定し、SetCooperativeLevel に渡して、「標準」協調レベルともいわれるウィンドウ協調レベルを要求している。SetCooperativeLevel メソッドは、別のアプリケーションが排他モードで全画面を既に制御している場合には失敗することがある。
次のコードは、アプリケーションの協調レベルの設定方法を示す。
g_dd.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL
DirectDraw オブジェクトを作成し、協調レベルを設定すると、レンダリングされるシーンを含み、表示に使用するサーフェスの準備が可能な状態になる。サンプル Triangle では、この準備を、「ステップ 2.2 : DirectDraw サーフェスをセット アップする」で行う。