DirectX

stop()後のノイズ削除

direct_sound_sinkでstop()した後ノイズが再生されるとのバグ報告を受け、close()を修正しました。 差分 ↓バグはこういう状況でした。 // 現在のバッファが書き込み中だったら if (offset_ % buffer_size_ != 0) { // 残りを0で埋める std::streamsize amt =…

DirectInput8対応

久々にDirectX SDKを更新したところ、dinput.libがなくなっていたのでDirectInput8に対応しました。 差分 CygwinとMinGWはlibdinput8.aだけあってヘッダがないので、SDL用の古いバージョンのままです。 Jamfileでは、gccだけDIRECTINPUT_VERSION=0x0500を定…

c_dfDIJoystick2

Linux版の実装は後で考えることにして、とりあえずHamigaki.Inputという名前でDirectInputのラッパーを追加しました。 今日の差分 まだ、ジョイスティックだけで、かつ未テストです。 さて、DirectXの基盤技術であるCOMではインタフェースやクラスの識別にGU…

無理やりiteratorにするとこうなります

試しにスレッドを使ってiteratorも作ってみました。

DirectX on MinGW/cygwin

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…

direct_sound_enumerate

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…

direct_sound_buffer

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>…

Enum系関数とiterator

iteratorの作り方を覚えると、列挙できるものは何でもiteratorにしたくなります。特に、Boost.Iteratorを使うとiteratorの作成が劇的に簡単になるため、なおさらです。しかし、DirectXで採用されているEnum系の関数(Enum〜、〜Enumerate)はiteratorモデルに…

direct_sound_buffer作成中

リンク元を見ていたら、id:yotto-k さんがDirectSoundに挑戦していたので、張り合ってDirectSoundのSinkを作成中です。 いつもの例を書き直すと、こんな感じになります。 // DirectSoundデバイス(Boost.Iostreamsのデバイスではない) audio::direct_sound_de…