3Dサウンドが不調であったためにサンプルをいじっていたところ、サウンドを再生したのちにエラーによって停止してしまいました。
詳細としては、SetEnableXAudioFlag(TRUE)をコメントアウトすると2Dサウンドのように距離、左右を考慮しない形で再生されます。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int SoundHandle;
VECTOR EmitterPos;
VECTOR ListenerPos;
VECTOR ListenerDir;
float xadd=4.0f;
ChangeWindowMode(TRUE);
SetEnableXAudioFlag(TRUE);// <-
Set3DSoundOneMetre(16.0f);// 1メートルに相当する値を設定する
// DXライブラリの初期化
if (DxLib_Init() < 0) return -1;
// 描画先を裏画面にする
SetDrawScreen(DX_SCREEN_BACK);
// リスナーの位置を初期化
ListenerPos = VGet(320.0f, 0.0f, 240.0f);
// リスナーの向きを初期化
ListenerDir.x = 0.0f;
ListenerDir.y = 0.0f;
ListenerDir.z = 1.0f;
// リスナーの位置と向きを設定
Set3DSoundListenerPosAndFrontPos_UpVecY(ListenerPos, VAdd(ListenerPos, ListenerDir));
// 音を3Dサウンドとして読み込む
SetCreate3DSoundFlag(TRUE);
SoundHandle = LoadSoundMem("Test.wav");
SetCreate3DSoundFlag(FALSE);
// 音が聞こえる距離を設定する
Set3DRadiusSoundMem(256.0f, SoundHandle);
// 音の再生位置を初期化
EmitterPos = VGet(320.0f, 0.0f, 300.0f);
// 音の再生位置を設定
Set3DPositionSoundMem(EmitterPos, SoundHandle);
// 音の再生を開始
PlaySoundMem(SoundHandle, DX_PLAYTYPE_LOOP);
// メインループ
while (ProcessMessage() == 0)
{
// 画面のクリア
ClearDrawScreen();
// 音の再生位置をX軸方向に移動
EmitterPos.x += xadd;
if (EmitterPos.x > 640.0f || EmitterPos.x < 0.0f)
{
xadd = -xadd;
EmitterPos.x += xadd;
}
Set3DPositionSoundMem(EmitterPos, SoundHandle);
// リスナーの位置を描画
DrawBox(
(int)(ListenerPos.x - 8), (int)(480.0f - (ListenerPos.z + 8)),
(int)(ListenerPos.x + 8), (int)(480.0f - (ListenerPos.z - 8)),
GetColor(255, 0, 0), TRUE);
// 音の再生位置を描画
DrawBox(
(int)(EmitterPos.x - 8), (int)(480.0f - (EmitterPos.z + 8)),
(int)(EmitterPos.x + 8), (int)(480.0f - (EmitterPos.z - 8)),
GetColor(255, 0, 255), TRUE);
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// サウンドハンドルの削除
DeleteSoundMem(SoundHandle);
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}
ログファイルはこちらです
0:ChangeWindowMode実行
4:ウインドウモードフラグが立てられました
11:DXライブラリの初期化処理開始
15: システムの情報を出力します
19: DXライブラリ Ver3.21d
22: 論理プロセッサの数 : 4
25: OS Windows10 ( Build 14393 )
133: 現時点のCPU動作速度:大体3.41GHz
137: MMX命令を使用します
143: SSE命令が使用可能です
148: SSE2命令が使用可能です
152: CPUベンダ:GenuineIntel
172: CPU名:Intel(R) Xeon(R) E-2124G CPU @ 3.40GHz
179: COMの初期化... 成功
194: 非同期読み込み処理の初期化...成功
204: ファイルアクセス処理の初期化...成功
211: メモリ総量:8010.65MB 空きメモリ領域:4517.34MB
215: タイマーの精度を検査します
219: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
222: パフォーマンスカウンターを使用します タイマー精度 : 3328.125000 KHz
230: ソフトの二重起動検査... 二重起動はされていませんでした
242: ウインドウクラスを登録します... 登録に成功しました
249: ウインドウモード起動用のウインドウを作成します
253: ディスプレイ情報のセットアップ開始
258: モニターの数:1 ディスプレイデバイスの数:4
262: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz
273: ディスプレイ情報のセットアップ完了
282: ウインドウの作成に成功しました
290: ウインドウを表示します
302: IMEを無効にしました
306: ウインドウスタイルをウインドウモード用に変更します... 完了
343: DirectInput関係初期化処理
347: XInput DLL の読み込み中... 成功
364: DirectInput7 の取得中... DirectInput8 の取得を試みます...成功
436: 引き続き初期化処理... 初期化成功
447: ジョイパッドの初期化...
490: ジョイパッドの初期化は正常に終了しました
494: マウスデバイスの初期化... 初期化成功
503: キーボードデバイスの初期化... 初期化成功
515: DirectInput 関連の初期化は正常に終了しました
527: WASAPI の初期化を行います
558: デフォルト遅延時間 : 10.159 ms
563: 最小遅延時間 : 2.902 ms
568: 遅延時間 : 10.159 ms
577: チャンネル数 : 2 ch
580: 量子化ビット深度 : 32 bit
585: 有効ビット深度 : 32 bit
589: サンプリングレート : 44100 Hz
592: データ形式 : 浮動小数点型
609: 動作モード : 共有モード
615: WASAPI の初期化は正常に終了しました
622: d3d11.dll の読み込み.... 成功
641: dxgi.dll の読み込み.... 成功
649: API CreateDXGIFactory1 のアドレスを取得します.... 成功
657: IDXGIFactory1 を作成します.... 成功
672: API D3D11CreateDevice のアドレスを取得します.... 成功
680: IDXGIAdapter を取得します.... 成功
689: Direct3D 11 FeatureLevel 11_0 以上を対象とします
693: ID3D11Device オブジェクトを取得します.... 成功
875: IDXGIDevice1 を取得します.... 成功
889: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました
893: [ウインドウモード 640x480]
896: IDXGISwapChain を作成します.... 成功
904: IDXGIFactory->CreateSwapChain の戻り値:0x00000000
907: IDXGIOutput を取得します.... 成功
915: Graphics Device:NVIDIA Quadro P620
919: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
923: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です
927: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です
932: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です
936: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
940: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
943: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です
948: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
952: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です
956: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
960: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です
968: DXT2テクスチャフォーマットは使えません
971: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です
975: DXT4テクスチャフォーマットは使えません
980: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です
984: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です
987: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です
991: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
995: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
998: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1003: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1006: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1010: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1021: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1025: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1029: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1037: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1043: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1048: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
1054: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1059: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1064: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1073: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1087: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1092: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1096: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1100: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1104: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1107: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1110: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1114: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1118: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1121: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1
1126: 同時にレンダリングできるバッファの数:8
1130: 最大テクスチャサイズ 幅:16384 高さ:16384
1134: 標準描画用の頂点バッファの作成.... 成功
1142: シェーダーコード関係の初期化.... 成功
1159: 各種シェーダー用定数バッファの作成.... 成功
1170: 各種 ID3D11InputLayout の作成.... 成功
1199: 画像の単純転送処理の初期化... 成功
1208: 深度バッファを作成します.... 成功
1217: フォントの初期化を行います
1223: フォントの初期化は正常に終了しました
1228: 文字コードバッファの初期化を行います... 完了しました
1240:DXライブラリの初期化処理終了