2009-12-01から1ヶ月間の記事一覧

乱数ジェネレータの実装。その1-EngineとDistribution-

C++

boostのvariate_generatorを思い出したので、適当に実装してみます。 C++0xでは使えないそうです。 参考サイト Boost Random Number Library Variate Generator - 1.41.0 letsboost::random 本の虫: C++0xの新しい乱数ライブラリ、random Mersenne Twisterを…

乱数の話。

最近友人とFF13のオプティマの話をしていて、 「オプティマって全部で何種類ある?」とか「組合せ」とか「順列」の話から乱数の話になった。 友人「ファイアーエンブレムみたいなパラメータの成長率はどう実装する?」 私 「レベルアップ時にHPが80%で1アッ…

XAudio2を使ってみる。その5-スレッドによるポーリング-

ようやくthreadクラスが出来たので、以前(XAudio2を使ってみる。その4-ストリーミング再生- - while( c++ );)のストリーミング再生と組み合わせて、まずはポーリングスレッドを作ってみましょう。 auto_reset_event end( false ); //ポーリングスレッド終…

threadクラスの実装。その3-eventクラス-

condition variableのほうが一般的でしょうか? とりあえずwindowsなので、イベントのラッパーを作ってみます。 eventクラス #include <windows.h> class event { typedef HANDLE handle_t; public: event( bool manual_reset, bool init_state ) { handle = CreateEven</windows.h>…

threadクラスの実装。その2-intrusive_ptrを使う-

出来るだけdeleteは書きたくないので、前回実装したintrusive_ptrを使って修正します。 修正する項目は thread_data_baseクラスのデストラクタをprotectedにする thread_data_baseクラスに参照カウンタを追加。 thread_data_baseクラスにintrusive_ptr_add_r…

intrusive_ptrの実装。

C++

最近、個人的にはshared_ptrより使用頻度の高いintrusive_ptrを実装してみます。参照先のオブジェクト側で参照カウンタを管理するスマートポインタですね。 intrusive_ptrが実体化、コピーされるときにintrusive_ptr_add_ref(T*)、破棄されるときにintrusive…

threadクラスの実装。その1

XAudio2のイベント通知のためにthreadクラスが必要になったので、テンプレートを使って実装してみたいと思います。ただし、pthreadは使ったことがないので、windowsのみの実装になります。 参考サイト Boost.Threads 前回雑記で書いたthreadクラスの実装を晒…

XAudio2を使ってみる。まとめ

XAudio2のまとめ XAudio2を使ってみる。その1-初期化- - while( c++ ); XAudio2を使ってみる。その2-音の再生- - while( c++ ); XAudio2を使ってみる。その3-WAVファイルの再生- - while( c++ ); XAudio2を使ってみる。その4-ストリーミング再生- - whil…

XAudio2を使ってみる。その4-ストリーミング再生-

ゲームなどのBGMでWAVファイルを使用する場合、数十Mバイトのバッファを用意するのは現実的ではないので、数秒程度のバッファを使って少しずつ再生していきます。まずはイベント通知型ではなく、ポーリング型で実装してみたいと思います。 解説 SubmitSource…

XAudio2を使ってみる。その3-WAVファイルの再生-

XAudio2で音を再生する場合、音データを格納したバッファと音源となるSourceVoiceが必要になります。 // // SourceVoiceの作成 // if( FAILED( xaudio->CreateSourceVoice( &source_voice, WAVEフォーマット ) ) ) throw "CreateSourceVoice"; // // SourceV…

XAudio2を使ってみる。その1-初期化-

WindowsVista以降、DirectSound3Dを使ってハードウェア的に3Dオーディオエフェクトをかけることはできません。DirectSound - Wikipediaクロスプラットフォーム(WindowsとXbox)で共通に使える低レベルオーディオAPIである「Xaudio2」に置き換えられるそうです…

XAudio2を使ってみる。その2-音の再生-

音データを格納する「バッファ」と、音源となる「ソース」を作成し、音の再生を行います。 バッファの作成 音データのフォーマットはWAVEFORMATEX構造体で記述します。設定するメンバは「チャンネル数」「1サンプルあたりのビット数」「サンプリング周波数…