2009-12-01から1ヶ月間の記事一覧
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アッ…
ようやくthreadクラスが出来たので、以前(XAudio2を使ってみる。その4-ストリーミング再生- - while( c++ );)のストリーミング再生と組み合わせて、まずはポーリングスレッドを作ってみましょう。 auto_reset_event end( false ); //ポーリングスレッド終…
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>…
出来るだけdeleteは書きたくないので、前回実装したintrusive_ptrを使って修正します。 修正する項目は thread_data_baseクラスのデストラクタをprotectedにする thread_data_baseクラスに参照カウンタを追加。 thread_data_baseクラスにintrusive_ptr_add_r…
最近、個人的にはshared_ptrより使用頻度の高いintrusive_ptrを実装してみます。参照先のオブジェクト側で参照カウンタを管理するスマートポインタですね。 intrusive_ptrが実体化、コピーされるときにintrusive_ptr_add_ref(T*)、破棄されるときにintrusive…
XAudio2のイベント通知のためにthreadクラスが必要になったので、テンプレートを使って実装してみたいと思います。ただし、pthreadは使ったことがないので、windowsのみの実装になります。 参考サイト Boost.Threads 前回雑記で書いたthreadクラスの実装を晒…
XAudio2のまとめ XAudio2を使ってみる。その1-初期化- - while( c++ ); XAudio2を使ってみる。その2-音の再生- - while( c++ ); XAudio2を使ってみる。その3-WAVファイルの再生- - while( c++ ); XAudio2を使ってみる。その4-ストリーミング再生- - whil…
ゲームなどのBGMでWAVファイルを使用する場合、数十Mバイトのバッファを用意するのは現実的ではないので、数秒程度のバッファを使って少しずつ再生していきます。まずはイベント通知型ではなく、ポーリング型で実装してみたいと思います。 解説 SubmitSource…
XAudio2で音を再生する場合、音データを格納したバッファと音源となるSourceVoiceが必要になります。 // // SourceVoiceの作成 // if( FAILED( xaudio->CreateSourceVoice( &source_voice, WAVEフォーマット ) ) ) throw "CreateSourceVoice"; // // SourceV…
WindowsVista以降、DirectSound3Dを使ってハードウェア的に3Dオーディオエフェクトをかけることはできません。DirectSound - Wikipediaクロスプラットフォーム(WindowsとXbox)で共通に使える低レベルオーディオAPIである「Xaudio2」に置き換えられるそうです…
音データを格納する「バッファ」と、音源となる「ソース」を作成し、音の再生を行います。 バッファの作成 音データのフォーマットはWAVEFORMATEX構造体で記述します。設定するメンバは「チャンネル数」「1サンプルあたりのビット数」「サンプリング周波数…