スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DirectSoundでストリーミング再生する方法(ソースコード付き)

DirectSound8で、ストリーミング再生を実装してみたので、
とりあえず、そのソースコードを公開してみます。

※クラス化はしてないので、普通にグローバル変数とか使ってます。

【ソースコード】DirectSoundSample.txt


■DirectSoundについて
DirectSoundって、音声を読み込む為の関数が無い、というのが厄介ですね。
自分でwavとかmp3とか、音声データのフォーマットを解析して読み込む部分を作らねばならない。

その為、DirectXでゲーム開発をする場合、
自分は無音のゲームを開発する感じになっていました。

今回、ある程度使い慣れているDirectSoundを使いましたが、
DirectSoundの後継と言われたりしているXAudio2を使ってみたいとか思ってます。


■ソースコードについて
とりあえず、行う手順は下記の通り。

【1】DirectSound8のデバイス作成
【2】音声データを解析してchar型の配列に格納
【3】音声データまたは、固定バッファのサイズでセカンダリバッファを作成
【4】セカンダリバッファに、イベント通知場所を設定
【5】_beginthreadex関数で、イベントを受け取った際に
   バッファを更新するスレッドを作成
【6】音声データをセカンダリバッファにコピー
【7】元の音声データ削除
【8】再生。
【9】再生中の音声データを停止、スレッドが終了するのを待つ
【10】スレッドのハンドルなどをCloseする


これだけの処理を実装するのは、正直、大変だと思う。

なぜなら、(個人的な想像であるが)
通常、ゲーム制作で_beginthreadex関数とか使わないからである。
※DirectSoundに加え、スレッド関する知識が必要になってくる

ともかく、何かおかしな動作があれば連絡ください。


■今後の予定について
今回作成するアクションゲームはDirectXで開発しようと思ってます。
(DXライブラリを使用しない)

なので、音声再生回り(DirectSound)やら、入力機器検出やら、
Xファイル読み込みやらを作っています。

パズルゲーム体験版は、5月に出すと決めて開発中。
頑張ります。

【参考画像】
Game1.jpg
タイトル画面です。下にVisualStdioのアイコンとかありますが気にしない。
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。