C ++でDirectSoundまたはXAudio2でEAXを使用するサンプル/チュートリアル/リソースはありますか? 何も見つからず、ゲーム エンジンに本当に必要です。
1 に答える
まず第一に、DirectSound は現時点では古いものです。古いゲームではまだサポートされており、DirectSound 8 ヘッダーは Windows SDK に含まれていますが、10 年以上にわたってサンプルやドキュメントの更新はありません。
ただし、Windows オーディオ ドライバー モデル (WDM) は、Creative EAX に必要なようなハードウェア オーディオ ミキシングをサポートしていません。これに対するサポートは Windows Vista で削除されたため、EAX は DirectSound または XAudio2 を介して使用することはできません。
DirectSound に関する Windows Vista ドライバー モデルの変更点をまとめると、次のようになります。
LOC_SOFTWARE
バッファは、サラウンド サウンドのマルチチャンネル フォーマットをサポートできます。Windows XP では、モノまたはステレオのみが でサポートされていましたLOC_SOFTWARE
。LOC_HARDWARE
バッファはサポートされていません。エフェクト (I3DL、EAX など) は、DirectSound ではサポートされていません。
DirectSound 3D ポジショニングは、モノラル サウンドに限定されます。
XAudio2 は、マルチチャンネル ソースを含む環境リバーブと 3D オーディオ ポジショニングをサポートし、すべてソフトウェアで実行されます。
XAudio 2.8 は Windows SDK に含まれていますが、Windows 7 または Windows Vista をターゲットにするには、XAudio 2.7 用の従来の DirectX SDK を使用する必要があります。詳細については、この記事を参照してください。サンプルはGitHubにあります。DirectX Tool Kit for Audioは、C++ から XAudio2 を使用するための非常に便利な抽象化です。
更新: XAudio 2.9 は、Windows 7 SP1 以降でXAudio2Redistを介して利用できるようになり、従来の DirectX SDK または従来の DirectSetup 展開を使用する必要がなくなりました。
EAX などの機能にハードウェア アクセスするには、OpenAL などのサードパーティ ソリューションを使用する必要があります。詳細については、クリエイティブ サイトを参照してください。