DirectX
direct_sound_sinkでstop()した後ノイズが再生されるとのバグ報告を受け、close()を修正しました。 差分 ↓バグはこういう状況でした。 // 現在のバッファが書き込み中だったら if (offset_ % buffer_size_ != 0) { // 残りを0で埋める std::streamsize amt =…
久々にDirectX SDKを更新したところ、dinput.libがなくなっていたのでDirectInput8に対応しました。 差分 CygwinとMinGWはlibdinput8.aだけあってヘッダがないので、SDL用の古いバージョンのままです。 Jamfileでは、gccだけDIRECTINPUT_VERSION=0x0500を定…
Linux版の実装は後で考えることにして、とりあえずHamigaki.Inputという名前でDirectInputのラッパーを追加しました。 今日の差分 まだ、ジョイスティックだけで、かつ未テストです。 さて、DirectXの基盤技術であるCOMではインタフェースやクラスの識別にGU…
試しにスレッドを使ってiteratorも作ってみました。
MinGWとcygwinでdirect_sound_testに失敗していたので修正しました。 DLLのインポートライブラリはSDLサイトで配布されているものを使用しています。 http://www.libsdl.org/extras/win32/cygwin/directx-devel.tar.gz http://www.libsdl.org/extras/win32/c…
id:mb2sync さんのアイデアで、direct_sound_enumerate()を実装してみました。 // ↓direct_sound.hppヘッダ内 namespace hamigaki { namespace audio { namespace direct_sound { struct device_info { std::string driver_guid; std::string description; s…
DirectSoundのSinkができました。動かなかった原因は、通知用イベントオブジェクトのインデックスを間違えていただけでした。 こんな感じになりました。 #include <hamigaki/audio/direct_sound.hpp> #include <hamigaki/audio/vorbis_file.hpp> #include <boost/iostreams/copy.hpp> namespace audio = hamigaki::audio; namespace ds = audio::direct_so</boost/iostreams/copy.hpp></hamigaki/audio/vorbis_file.hpp></hamigaki/audio/direct_sound.hpp>…
iteratorの作り方を覚えると、列挙できるものは何でもiteratorにしたくなります。特に、Boost.Iteratorを使うとiteratorの作成が劇的に簡単になるため、なおさらです。しかし、DirectXで採用されているEnum系の関数(Enum〜、〜Enumerate)はiteratorモデルに…
リンク元を見ていたら、id:yotto-k さんがDirectSoundに挑戦していたので、張り合ってDirectSoundのSinkを作成中です。 いつもの例を書き直すと、こんな感じになります。 // DirectSoundデバイス(Boost.Iostreamsのデバイスではない) audio::direct_sound_de…