2008年7月31日木曜日

マスタリングDirectXを読んでみた3



PART7 ユーザからの操作を受け取る(DirectInput)(23:00)


これも会社と電車で読み終わってしまった。


内容を簡単にまとめてみる。




  • DirectInputは、DirectXのなかでももっとも取り扱いが簡単

  • DirectInputの入力方法


    • 直接入力。シューティングゲームなどに向いている。

    • バッファード入力。RPGなどリアルタイム性でないもに向いている。




利用手順



  • 初期化


    • DirectInputオブジェクトの生成

    • CreateDiveceメソッドに入力機器の種類を指定して、データを受け取ることができる状態にする。



  • データ読み取り


    • SetDataFormatメソッドに入力機器に合わせたデータフォーマットを指定し、データを受けとる準備をする。

    • GetDeviceStateメソッドでデバイスからのデータを受け取る。

    • Acquireメソッドでデバイスを取り戻す。



  • 開放


    • 使用していたデバイスをUnacquireメソッドで停止

    • DirectInputデバイスコネクタを開放

    • DirectInputオブジェクトを開放




キーボードとマウス



  • マウスもキーボードも処理の流れはほぼ同じ。

  • 注意点としては、マウスの座標データは絶対座標ではなく、相対座標。


ジョイパッド



  • EnumDevicesメソッドでジョイパッドの数を数える。このメソッドにコールバック関数を渡し、パッド単位でデバイスを作成していく。

  • EnumObjectsメソッドでジョイパッド上のオブジェクト(方向キー、ボタンなど)を数え、コールバック関数を呼び出す。











PART8 効果音を追加する(DirectSound)(23:30)


バッファ


プライマリバッファ

最終的な音の状態を保持するバッファ。スピーカにつながっていると考えてよい。

セカンダリバッファ

音声を収めておくバッファ。



WAVファイル

WAVファイルを読み込むためには、DirectSoundが読み出してくれるわけではなく、直接関係ない、マルチメディア入出力関数を使用しなくてはならない。


処理手順



  • 初期化


    • DirectSoundデバイスを取得する。

    • DirectSoundの協調レベルを設定する。

    • CreateSoundBufferメソッドを使ってプライマリバッファを取得する。

    • プライマリバッファのフォーマットを指定し、SetFormatメソッドでプライマリバッファに適用する。

    • QueryInterfaceメソッドでプライマリバッファから3Dリスナーインターフェースを取得する。



  • WAVファイルの読み込み


    • mmioOpen関数を使って開き、WAVファイルに収められている波形データのフォーマットを確認する。

    • セカンダリバッファを作成し、波形データのフォーマットと同じ形式にする。

    • WAVファイル内の波形データを読み込む準備をする。

    • WAVファイル内の波形データをセカンダリバッファへ読み込む。



  • 音声の再生


    • GetStatusメソッドを使って指定された音声バッファが再生可能かどうか確認する。

    • 再生可能であればPlayメソッドで再生する。



  • 開放


    • バッファに関する構造体を開放する。

    • DirectSoundオブジェクトを破棄する。





マスタリングDirectXプログラミング

マスタリングDirectXプログラミング










0 件のコメント: