DirectXで遊ぼう | 上のページ |
- 概要
DirectSoundの最も中心となるオブジェクトです。
実際の再生に用いるIDirectSoundBufferオブジェクトを生成したり、排他レベルを設定したりする物です。
以下の内容について解説します。
- サンプルプログラム
以下は、IDirectSoundを生成する為のコードです。
実際の動作の解説については、この後行います。
IDirectSoundは、DirectSoundCreateという関数を使って生成を行います。
LPDIRECTSOUND dsound; // IDirectSoundのポインタ HRESULT r; // 関数の返値 r = DirectSoundCreate(NULL,&ddraw,NULL); if(r != DD_OK){ // // IDirectSound生成失敗(r:エラーコード) // } r = dsound->SetCooperativeLevel(hwnd,DSSCL_NORMAL); if(r != DD_OK){ ddraw->Release(); // // SetCooperativeLevel失敗(r:エラーコード) // }DirectDrawに比べて、DirectSoundの初期化はこのように非常に簡単です。
- IDirectSoundを生成する
DirectSoundCreate関数を使用します。
この関数に与えるパラメータは、通常はオブジェクトを格納する領域を渡すだけで良いです。
生成されたIDirectSoundは、後のDirectSoundの制御に使うポインタとなります。
LPDIRECTSOUND dsound; // IDirectSoundのポインタ HRESULT r; // 関数の返値 r = DirectSoundCreate(NULL,&ddraw,NULL); if(r != DD_OK){ // // IDirectSound生成失敗(r:エラーコード) // }DirectSoundCreateの返値がDD_OKになると、正しくオブジェクトが生成した事になります。
- 制御レベルを設定する
次に必要なのは、排他レベルとウィンドゥハンドルを指定する事です。
排他レベルですけど、特殊な用途でもない限りはDSSCL_NORMALで事足ります。
r = dsound->SetCooperativeLevel(hwnd,DSSCL_NORMAL); if(r != DD_OK){ ddraw->Release(); // // SetCooperativeLevel失敗(r:エラーコード) // }
- DirectSoundを開放する
IDirectDrawと同様にこれはCOMモデルですので、Releaseする事でDirectSoundは開放できます。
dsound->Release();
上のページ |