DirectX Audioが簡単に利用できるように、必要な処理を関数化したソースファイルを用意した。このソースファイルを既存のプロジェクトに組み込み、利用する。
上記リンクからファイルをダウンロードし、解凍すると「NKC_DAudio.cpp」「NKC_DAudio.h」の2つのファイルが現れる。これらを、組み込みたいプロジェクトのフォルダに配置する。
なお、このプログラムは、共通ヘッダ・ファイル(Common.h)が存在するプロジェクトに組み込むことを前提として作成しているので、ソース分割を行っていない場合は7章を見ながらソース分割をしておくこと。
NKC_DAudio.cpp、NKC_DAudio.hをプロジェクトのフォルダにコピーしたら、プロジェクトを開き、プロジェクトへ追加する(プロジェクト→プロジェクトへ追加→ファイル)。
NKC_DAudio.cpp、NKC_DAudio.hをプロジェクトへ追加したら、共通ヘッダファイル(common.h)を次のように修正する。
//----------------------------------------------------------------------------- // 共通ヘッダ・ファイル // Copyright NKC Game Staff(←自分の名前) //----------------------------------------------------------------------------- #include <stdio.h> #include <windows.h> // WindowsAPIを使用可能にする #include <windowsx.h> #include <d3d8.h> // DirectX8ヘッダファイル #include <d3dx8.h> // D3DXヘッダファイル #include <dmusici.h> // DirectAudioを使用可能にする ・ ・ ・ // プロトタイプ宣言 /* public.cppに本体があるもの */ #include "public.h" /* myDGraphics.cppに本体があるもの */ #include "myDGraphics.h" /* NKC_DAudio.cppに本体があるもの */ #include "NKC_DAudio.h" /* Start.cppに本体があるもの */ #include "start.h" /* Game.cppに本体があるもの */ #include "game.h" /* Enemy.cppに本体があるもの */ #include "Enemy.h"
組み込みが終わったらビルドを実行し、エラーが出ないことを確認する。
ソースファイルの組み込みが終わったら、DirectX Audioの初期化と開放処理を追加する。WinMain.cppのWinMain関数を次のように修正する。
//-------------------------------------------------------------------------------------------------
// メイン関数(エントリーポイント)プログラムはここから始まる
//-------------------------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
{
MSG msg; // メッセージ構造体変数
// COM の初期化
if ( FAILED(CoInitialize(NULL)) ) return (FALSE);
//表示するウィンドウの定義、登録、表示
if ( !InitApp(hThisInst, nWinMode) ) // InitApp関数を呼び出し、
return (FALSE); // 正常に終了すれば次にメッセージループへ
// DirectX8の初期化
if ( FAILED(InitDX8()) ) return (FALSE);
// DirectX Audioの初期化
if ( FAILED(InitDXAudio()) ) return (FALSE);
// 乱数ジェネレーターのクリア
srand(timeGetTime());
// ゲームループ
while (TRUE) {
// メッセージがあるかどうか
if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
// メッセージを取得し、WM_QUITかどうか
if (!GetMessage(&msg, NULL, 0, 0)) break;
TranslateMessage(&msg); //キーボード利用を可能にする
DispatchMessage(&msg); //制御をWindowsに戻す
} else {
// ゲームメイン処理
UpdateFrame();
Sleep(1);
}
}
// セグメントの開放処理
ReleaseDMSegment();
// DirectX Audioの開放処理
ReleaseDXAudio();
// DirectX8オブジェクトの削除
ReleaseD3D();
return msg.wParam;
}
以上の修正を行ったらビルドを実行し、エラーが出ないことを確認する。
| BACK(DirectX Audioについて) | NEXT(基本的な使い方) |