DirectShowが簡単に利用できるように、必要な処理を関数化したソースファイルを用意した。このソースファイルを既存のプロジェクトに組み込み、利用する。
上記リンクからファイルをダウンロードし、解凍すると、「NKC_DShow.cpp」「NKC_DShow.h」の2つのファイルが現れる。これらを、組み込みたいプロジェクトのフォルダに配置する。
なお、このプログラムは、共通ヘッダ・ファイル(NKC_Common.h)が存在するプロジェクトに組み込むことを前提として作成しているので、ソース分割を行っていない場合は7章を見ながらソース分割をしておくこと。
DirectShowを使えるようにプロジェクトの設定を変更する。
プロジェクトのフォルダに配置した2つのファイル(NKC_DShow.cpp、NKC_DShow.h)を自分のプロジェクトにインポートする。
共通ヘッダ・ファイル「NKC_Common.h」にdshow.h、NKC_DShow.hをインクルードする。
//----------------------------------------------------------------------------- // 共通ヘッダ・ファイル // Copyright NKC Game Staff(←自分の名前) //----------------------------------------------------------------------------- #include <stdio.h> #include <windows.h> // WindowsAPIを使用可能にする #include <windowsx.h> #include <d3d8.h> // DirectX8ヘッダファイル #include <d3dx8.h> // D3DXヘッダファイル #include <dshow.h> // DirectShowを使用可能にする ・ ・ ・ // 自作ヘッダ・ファイルの組み込み #include "NKC_Public.h" #include "NKC_DGraphics.h" #include "NKC_DShow.h" #include "start.h" #include "game.h" #include "enemy.h" ・ ・ ・
ムービーの再生は、専用のウィンドウ領域で行われる。その際、通常の描画処理が行われるとムービー画面が上書きされてしまう。そのため、ムービーを再生しているときは描画処理が行われないように、WinMain.cppのUpdateFrame関数を次のように修正する。
//-----------------------------------------------------------------------------
// 関数名 : UpdateFrame()
// 機能概要: ゲームメイン処理
//-----------------------------------------------------------------------------
void UpdateFrame(void)
{
・
・
・
/* シーン終了 */
gl_lpD3ddev->EndScene();
/* フリップ(ムービー再生中はフリップを行わない) */
if ( g_movieFlg == false ) gl_lpD3ddev->Present(NULL, NULL, NULL, NULL);
}
※以上の修正を行ったらビルドを実行し、エラーが出ないことを確認する。
| BACK(DirectShowについて) | NEXT(ロゴムービーが流れてからスタート画面を表示させるには?) |