トップページ > 記事閲覧
SetEnableXAudioFlag(TRUE)時の再生に
名前:名無三 日時: 2020/01/30 13:25

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ライブラリの初期化処理終了
メンテ

Page: 1 |

Re: SetEnableXAudioFlag(TRUE)時の再生に ( No.1 )
名前:管理人 日時:2020/01/31 01:09

すみません、『SetEnableXAudioFlag(TRUE);を指定した場合にメモリの不正なアクセスになってしまうバグ』と 『デフォルトの状態では3Dサウンド効果が全くなくなるバグ』の二つのバグがありました どちらのバグも修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: SetEnableXAudioFlag(TRUE)時の再生に ( No.2 )
名前:名無三(解決) 日時:2020/01/31 21:10

修正感謝します、動作確認できました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存