XAudio2の初期化&現状報告

お久しぶりです。EFです。

なかなかブログを書く気力がなく放置してました。
すみません。

いろいろあって学校を卒業して、今はアルバイトで働きながらニートしてます。


そういうことで最近触り始めたXAudio2の初期化を書きます。

その前に、XAudio2とは何ぞや?って人がいると思うので一言で説明すると、
「DirectSoundの後継」です。

XBOXとかあの辺と一緒になった感じだと思っていただければいいかと思います。(知識不足なので違うかもしれません)

そんなわけで以下は初期化コード。
事前にプロジェクトのVC++ディレクトリのインクルードディレクトリとライブラリディレクトリにDirectXのパスを通しておくこと。

// ----------------------------------include
#include <xaudio2.h>

// ----------------------------------global
IXAudio2*                g_pXAudio2 = nullptr;
IXAudio2MasteringVoice*  g_pXAudio2MasteringVoice = nullptr;

// ----------------------------------prototype
bool Init(); // 初期化関数
void Cleanup(); // 後処理関数

// エントリポイント
int main()
{
    if ( Init() )
    {
        // 初期化失敗
        Cleanup();
        return 1;
    }

    // 初期化成功
   
    
    // 後処理
    Cleanup();

    return 0;
}

// 初期化関数
bool Init()
{

    // COMライブラリ初期化
    if ( FAILED( CoInitializeEx( NULL, COINIT_MULTITHREADED ) ) )
    {
        return true;
    }

    // XAudio2のインスタンスを生成
    if ( FAILED( XAudio2Create( &g_pXAudio2, 0 ) ) )
    {
        return true;
    }

    // MasteringVoiceの生成
    if ( FAILED( g_pXAudio2->CreateMasteringVoice( &g_pXAudio2MasteringVoice ) ) )
    {
        return true;
    }

    return false;
}

// 後処理関数
void Cleanup()
{
    // MasteringVoiceが生成されていれば破棄
    if ( g_pXAudio2MasteringVoice != nullptr )
    {
        g_pXAudio2MasteringVoice->DestroyVoice();
        g_pXAudio2MasteringVoice = nullptr;
    }

    // XAudio2が生成されていれば破棄
    if ( g_pXAudio2 != nullptr )
    {
        g_pXAudio2->Release();
        g_pXAudio2 = nullptr;
    }

    // COMの破棄
    CoUninitialize();
}

コピペしてるわけではないので誤字があるかもしれません。
ちょっとだけ綺麗に書くように心がけてみました。
HRESULTでエラーを返すようなことはしてませんが、その辺がわかる人はちゃんと返しましょう。


今回はここまでです。お疲れ様でした。