トップページ > 記事閲覧
x64だと3Dサウンドが正常に動作しない
名前:焼き鯖 日時: 2022/05/09 10:33

VisualStudio2022でビルドしたところ、同じソースコードでもx86だと3Dサウンドが正常に機能するのですが、x64だと距離等で音量は変わるものの左右の音量が同じになってしまいます。 (別で呼び出したXAudio2を使用するリバーブ系の関数はどちらの場合でも正常に動作するのに対して、左右の音量だけが変わりませんでした。) DXライブラリはWindows版のVer3.23で、ソースコード内でもDxLib_Init関数の前にSetEnableXAudioFlag関数にTRUEを渡して呼び出しています。 プロジェクト設定は一応何度も見直しましたが、x86とx64で同じ設定になっているはずです。 もし私の設定ミス等だったら申し訳ないのですが、これは仕様なのでしょうか?
メンテ

Page: 1 |

Re: x64だと3Dサウンドが正常に動作しない ( No.1 )
名前:管理人 日時:2022/05/10 00:16

いえ、そのような仕様はありません 手元で以下のようなテストプログラムを実行してみましたが、XAudio を有効にした場合は x64 でも 問題なく左右の音量が変化しました #include "DxLib.h" #include <math.h> #define MOVE_SPEED 4.0f #define ANGLE_SPEED 0.1f int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int SoundHandle ; VECTOR EmitterPos ; VECTOR ListenerPos ; VECTOR ListenerDir ; float ListenerAngle ; // ウィンドウモードで起動 ChangeWindowMode( TRUE ) ; // XAudio を有効化 SetEnableXAudioFlag( TRUE ) ; // 1メートルに相当する値を設定する Set3DSoundOneMetre( 16.0f ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); // リスナーの位置を初期化 ListenerPos = VGet( 320.0f, 0.0f, 40.0f ) ; // リスナーの向きを初期化 ListenerAngle = DX_PI_F / 2.0f ; ListenerDir.x = cos( ListenerAngle ) ; ListenerDir.y = 0.0f ; ListenerDir.z = sin( ListenerAngle ) ; // リスナーの位置と向きを設定 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, 240.0f ) ; // 音の再生位置を設定 Set3DPositionSoundMem( EmitterPos, SoundHandle ) ; // 音の再生を開始 PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen(); // 方向キーでリスナーの位置を移動 if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) { ListenerPos.x -= MOVE_SPEED ; } if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) { ListenerPos.x += MOVE_SPEED ; } if( CheckHitKey( KEY_INPUT_UP ) == 1 ) { ListenerPos.z += MOVE_SPEED ; } if( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) { ListenerPos.z -= MOVE_SPEED ; } // ZXキーで向きを変更 if( CheckHitKey( KEY_INPUT_Z ) == 1 ) { ListenerAngle += ANGLE_SPEED ; if( ListenerAngle > DX_PI_F ) { ListenerAngle -= DX_TWO_PI_F ; } } if( CheckHitKey( KEY_INPUT_X ) == 1 ) { ListenerAngle -= ANGLE_SPEED ; if( ListenerAngle < -DX_PI_F ) { ListenerAngle += DX_TWO_PI_F ; } } // リスナーの位置と向きを設定 ListenerDir.x = cos( ListenerAngle ) ; ListenerDir.y = 0.0f ; ListenerDir.z = sin( ListenerAngle ) ; Set3DSoundListenerPosAndFrontPos_UpVecY( ListenerPos, VAdd( ListenerPos, ListenerDir ) ) ; // リスナーの位置を描画 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 ) ; // リスナーの向きを描画 DrawLine( ( int ) ListenerPos.x, ( int )( 480.0f - ListenerPos.z ), ( int )( ListenerPos.x + ListenerDir.x * 40.0f ), ( int )( 480.0f - ( ListenerPos.z + ListenerDir.z * 40.0f ) ), GetColor( 255,255,255 ) ) ; // 音の再生位置を描画 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; } プログラムを起動すると画面中心に音源である紫色の四角が、画面下側にリスナーの位置を表す 赤色の四角と、リスナーの向きを表す白い線が表示され、Test.wav がループ再生されます キーボードの方向キーでリスナーの位置( 赤い四角の位置 )を移動できますので、 赤い四角を音源の位置である紫の四角の左側や右側に移動してみてください 手元で試した限りでは問題なく左右の音量が変化しました
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.2 )
名前:焼き鯖 日時:2022/05/10 01:24

返信ありがとうございます。 使い方のページの方法に沿ってプロジェクトごと作り直し、貼ってくださったコードをそのままコピペして実行しましたが、こちらの手元で試した限りだとやはりx86だと変化があり、x64だと変化がないように思えました。
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.3 )
名前:管理人 日時:2022/05/11 03:20

お試し頂きありがとうございます 同じプログラムで動作に差異があるとなりますと、もしかしたら使用されているPCに搭載されているサウンドデバイスやドライバが x86 と x64 で動作の挙動が異なるのかもしれません よろしければプログラムを実行した際に作成される Log.txt の内容を丸ごと掲示板に貼り付けていただけないでしょうか? m(_ _)m 何か原因が分かるような出力があるかもしれません…
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.4 )
名前:焼き鯖 日時:2022/05/11 18:14

了解いたしました。 デバイス名は"Realtek HD Audio 2nd output"でマイク付き有線イヤホンを3.5mmジャックで直接PCにつなげている状態です。 ドライバ名は"Realtek(R) Audio"です。 追記: マシン固有の問題はあり得ると思って周囲のそれぞれ別の環境の3台で同プログラムを動かしたところ、同様にx86では正常に動作し、x64では変化が見られませんでした。 有線でデバイスはRealtekのものとHDMIから出力したNvidiaのグラボ経由のものどちらもです。 ----------------------------以下x64Log内容---------------------------- 0:ChangeWindowMode実行 0:ウインドウモードフラグが立てられました 1:DXライブラリの初期化処理開始 3: システムの情報を出力します 3: DXライブラリ Ver3.23 3: 論理プロセッサの数 : 16 4: OS Windows10 ( Build 19044 ) 104: 現時点のCPU動作速度:大体3.06GHz 104: MMX命令を使用します 104: SSE命令が使用可能です 105: SSE2命令が使用可能です 105: CPUベンダ:GenuineIntel 107: CPU名:Intel(R) Core(TM) i9-10980HK CPU @ 2.40GHz 107: COMの初期化... 成功 137: 非同期読み込み処理の初期化...成功 138: ファイルアクセス処理の初期化...成功 139: メモリ総量:32585.63MB 空きメモリ領域:19117.70MB 139: タイマーの精度を検査します 139: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 139: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 140: ソフトの二重起動検査... 二重起動はされていませんでした 140: ウインドウクラスを登録します... 登録に成功しました 141: ウインドウモード起動用のウインドウを作成します 141: ディスプレイ情報のセットアップ開始 141: モニターの数:2 ディスプレイデバイスの数:7 142: No.0 モニター名:\\.\DISPLAY1 3840x2160 32bit 60Hz 142: No.1 モニター名:\\.\DISPLAY4 4320x2430 32bit 60Hz 160: ディスプレイ情報のセットアップ完了 164: ウインドウの作成に成功しました 164: ウインドウを表示します 200: IMEを無効にしました 202: ウインドウスタイルをウインドウモード用に変更します... 完了 228: DirectInput関係初期化処理 228: XInput DLL の読み込み中... 成功 231: DirectInput8 の取得を試みます...成功 243: 引き続き初期化処理... 初期化成功 247: ジョイパッドの初期化... 247: XInput 対応コントローラーのチェックを開始します 248: XInput 対応コントローラー No.0 をチェック 248: XInput 対応コントローラー No.0 の接続は確認できませんでした 248: XInput 対応コントローラー No.1 をチェック 248: XInput 対応コントローラー No.1 の接続は確認できませんでした 249: XInput 対応コントローラー No.2 をチェック 249: XInput 対応コントローラー No.2 の接続は確認できませんでした 249: XInput 対応コントローラー No.3 をチェック 250: XInput 対応コントローラー No.3 の接続は確認できませんでした 251: XInput 対応コントローラーのチェック完了 251: DirectInput 対応ジョイパッドの列挙を開始します 277: DirectInput 対応ジョイパッドの列挙終了 277: ジョイパッドの初期化は正常に終了しました 278: マウスデバイスの初期化... 初期化成功 278: キーボードデバイスの初期化... 初期化成功 282: DirectInput 関連の初期化は正常に終了しました 287: XAudio2 の初期化を行います 289: XAudio2_8.dll を使用します 292: XAudio2 インターフェースの取得と初期化を行います.... 成功 Ver2.8 615: XAudio2 の初期化は正常に終了しました 618: d3d11.dll の読み込み.... 成功 621: dxgi.dll の読み込み.... 成功 622: API CreateDXGIFactory2 のアドレスを取得します.... 成功 622: IDXGIFactory2 を作成します.... 成功 635: IDXGIAdapter を列挙 635: Adapter No.0 Desc:NVIDIA GeForce RTX 3080 Laptop GPU 636: Output Device No.0 Name:\\.\DISPLAY1 636: Output Device No.1 Name:\\.\DISPLAY4 637: Adapter No.1 Desc:Intel(R) UHD Graphics 637: Adapter No.2 Desc:Microsoft Basic Render Driver 638: API D3D11CreateDevice のアドレスを取得します.... 成功 639: IDXGIAdapter を取得します.... 成功 639: Direct3D 11 FeatureLevel 11_0 以上を対象とします 639: ID3D11Device オブジェクトを取得します.... 成功 773: IDXGIDevice1 を取得します.... 成功 774: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 775: [ウインドウモード 640x480] 775: IDXGISwapChain2 を作成します.... 成功 779: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 779: IDXGIOutput を取得します.... 成功 780: Graphics Device:NVIDIA GeForce RTX 3080 Laptop GPU 780: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 780: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 781: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 781: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 781: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 781: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 781: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 784: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 784: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 784: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 785: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 785: DXT2テクスチャフォーマットは使えません 785: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 785: DXT4テクスチャフォーマットは使えません 786: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 786: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 786: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 786: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 786: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 787: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 787: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 787: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 787: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 788: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 788: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 788: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 788: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 789: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 789: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 789: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 789: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 790: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 790: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 790: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 790: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 790: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 791: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 791: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 791: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 791: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 792: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 792: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 792: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 793: 同時にレンダリングできるバッファの数:8 793: 最大テクスチャサイズ 幅:16384 高さ:16384 793: 標準描画用の頂点バッファの作成.... 成功 794: シェーダーコード関係の初期化.... 成功 808: 各種シェーダー用定数バッファの作成.... 成功 810: 各種 ID3D11InputLayout の作成.... 成功 836: 画像の単純転送処理の初期化... 成功 838: 深度バッファを作成します.... 成功 840: フォントの初期化を行います 844: フォントの初期化は正常に終了しました 967: 文字コードバッファの初期化を行います... 完了しました 985:DXライブラリの初期化処理終了 11677:ウインドウを閉じようとしています 11682:ウインドウが破棄されようとしています 11684:ソフトを終了する準備が整いました 11688:フォントの初期化を行います 11689:フォントの初期化は正常に終了しました 11714:d3d11.dll の解放 1 11715:dxgi.dll の解放 1 11715:Direct3D11 のオブジェクト数を出力 11715:Direct3D11 のオブジェクト合計数 : 0 11716:DirectInput 関連の終了処理... 完了 11718:サウンド関連の終了処理... 完了 11736:ウィンドウ関連の終了処理... 完了 11806:COMを終了... 完了 11807: 11807:Alloc memory dump 11807: Total size:0(0.000kb) Alloc num:0 11807:
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.5 )
名前:管理人 日時:2022/05/12 03:54

ログの貼付けとデバイスのご情報ありがとうございます ログにも特に原因に繋がりそうな出力はありませんし、複数のデバイスで同様の状況となりますとドライバが原因でも無さそうですね… うーん、謎です 私の環境で No.1 のプログラムをビルドして左右の音量に変化があることを確認した実行ファイルをこちらにアップしましたので、 よろしければこちらの実行ファイルでも同じように左右に音量差がない状態になるかご確認頂けないでしょうか? m(_ _;m https://dxlib.xsrv.jp/temp/3DSoundTest_x86_x64.zip ( zipファイルの中に 3DSoundTest_x64.exe と 3DSoundTest_x86.exe があります )
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.6 )
名前:焼き鯖 日時:2022/05/12 04:10

ありがとうございます。 さっそく実行したところ、どちらのファイルも正常に動作し左右の音量に変化があることを確認しました。 あまり意味がないかもしれませんが、一応ログも貼っておきます -------------------------以下x64Log内容------------------------- 0:ChangeWindowMode実行 0:ウインドウモードフラグが立てられました 1:DXライブラリの初期化処理開始 2: システムの情報を出力します 2: DXライブラリ Ver3.23a 3: 論理プロセッサの数 : 16 3: OS Windows10 ( Build 19044 ) 103: 現時点のCPU動作速度:大体3.07GHz 103: MMX命令を使用します 103: SSE命令が使用可能です 103: SSE2命令が使用可能です 103: CPUベンダ:GenuineIntel 104: CPU名:Intel(R) Core(TM) i9-10980HK CPU @ 2.40GHz 105: COMの初期化... 成功 129: 非同期読み込み処理の初期化...成功 129: ファイルアクセス処理の初期化...成功 131: メモリ総量:32585.63MB 空きメモリ領域:19947.33MB 131: タイマーの精度を検査します 131: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 131: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 131: ソフトの二重起動検査... 二重起動はされていませんでした 132: ウインドウクラスを登録します... 登録に成功しました 132: ウインドウモード起動用のウインドウを作成します 133: ディスプレイ情報のセットアップ開始 133: モニターの数:2 ディスプレイデバイスの数:7 133: No.0 モニター名:\\.\DISPLAY1 3840x2160 32bit 60Hz 134: No.1 モニター名:\\.\DISPLAY4 4320x2430 32bit 60Hz 151: ディスプレイ情報のセットアップ完了 154: ウインドウの作成に成功しました 154: ウインドウを表示します 182: IMEを無効にしました 184: ウインドウスタイルをウインドウモード用に変更します... 完了 204: DirectInput関係初期化処理 204: XInput DLL の読み込み中... 成功 205: DirectInput8 の取得を試みます...成功 214: 引き続き初期化処理... 初期化成功 220: ジョイパッドの初期化... 220: XInput 対応コントローラーのチェックを開始します 220: XInput 対応コントローラー No.0 をチェック 221: XInput 対応コントローラー No.0 の接続は確認できませんでした 221: XInput 対応コントローラー No.1 をチェック 221: XInput 対応コントローラー No.1 の接続は確認できませんでした 221: XInput 対応コントローラー No.2 をチェック 222: XInput 対応コントローラー No.2 の接続は確認できませんでした 222: XInput 対応コントローラー No.3 をチェック 222: XInput 対応コントローラー No.3 の接続は確認できませんでした 222: XInput 対応コントローラーのチェック完了 222: DirectInput 対応ジョイパッドの列挙を開始します 251: DirectInput 対応ジョイパッドの列挙終了 252: ジョイパッドの初期化は正常に終了しました 252: マウスデバイスの初期化... 初期化成功 252: キーボードデバイスの初期化... 初期化成功 256: DirectInput 関連の初期化は正常に終了しました 258: XAudio2 の初期化を行います 258: XAudio2_8.dll を使用します 259: XAudio2 インターフェースの取得と初期化を行います.... 成功 Ver2.8 488: XAudio2 の初期化は正常に終了しました 489: d3d11.dll の読み込み.... 成功 490: dxgi.dll の読み込み.... 成功 490: API CreateDXGIFactory2 のアドレスを取得します.... 成功 491: IDXGIFactory2 を作成します.... 成功 495: IDXGIAdapter を列挙 496: Adapter No.0 Desc:NVIDIA GeForce RTX 3080 Laptop GPU 496: Output Device No.0 Name:\\.\DISPLAY1 496: Output Device No.1 Name:\\.\DISPLAY4 496: Adapter No.1 Desc:Intel(R) UHD Graphics 496: Adapter No.2 Desc:Microsoft Basic Render Driver 496: API D3D11CreateDevice のアドレスを取得します.... 成功 497: IDXGIAdapter を取得します.... 成功 497: Direct3D 11 FeatureLevel 11_0 以上を対象とします 497: ID3D11Device オブジェクトを取得します.... 成功 560: IDXGIDevice1 を取得します.... 成功 561: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 561: [ウインドウモード 640x480] 561: IDXGISwapChain2 を作成します.... 成功 568: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 568: IDXGIOutput を取得します.... 成功 568: Graphics Device:NVIDIA GeForce RTX 3080 Laptop GPU 568: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 568: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 569: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 569: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 569: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 569: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 569: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 569: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 569: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 570: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 570: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 570: DXT2テクスチャフォーマットは使えません 570: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 570: DXT4テクスチャフォーマットは使えません 570: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 570: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 571: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 571: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 571: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 571: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 571: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 571: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 572: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 572: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 572: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 572: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 572: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 572: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 572: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 572: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 573: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 573: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 573: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 573: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 573: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 573: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 573: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 574: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 574: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 574: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 574: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 574: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 574: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 574: 同時にレンダリングできるバッファの数:8 575: 最大テクスチャサイズ 幅:16384 高さ:16384 575: 標準描画用の頂点バッファの作成.... 成功 575: シェーダーコード関係の初期化.... 成功 583: 各種シェーダー用定数バッファの作成.... 成功 584: 各種 ID3D11InputLayout の作成.... 成功 584: 画像の単純転送処理の初期化... 成功 585: 深度バッファを作成します.... 成功 586: フォントの初期化を行います 587: フォントの初期化は正常に終了しました 679: 文字コードバッファの初期化を行います... 完了しました 697:DXライブラリの初期化処理終了 2408:ウインドウを閉じようとしています 2414:ウインドウが破棄されようとしています 2414:ソフトを終了する準備が整いました 2416:フォントの初期化を行います 2416:フォントの初期化は正常に終了しました 2435:d3d11.dll の解放 1 2436:dxgi.dll の解放 1 2436:Direct3D11 のオブジェクト数を出力 2436:Direct3D11 のオブジェクト合計数 : 0 2437:DirectInput 関連の終了処理... 完了 2439:サウンド関連の終了処理... 完了 2452:ウィンドウ関連の終了処理... 完了 2517:COMを終了... 完了 2517: 2517:Alloc memory dump 2518: Total size:0(0.000kb) Alloc num:0 2518:
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.7 )
名前:管理人 日時:2022/05/13 01:02

お試し頂き&ログの貼付けありがとうございます なんと、正常に動作したのですね… Ver3.23 からこれまでの間に特に3Dサウンドに関わる変更はしていなかった筈なのですが、 もしかしたらこちらの暫定最新バージョンでは正常に動作するのかもしれません 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/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) お手数で申し訳ありませんが、よろしければお試しください m(_ _;m
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.8 )
名前:焼き鯖 日時:2022/05/13 02:33

ありがとうございます。 やってみましたが、やはり同様に変化がありませんでした。 しかし、ふとしたことから管理人様が同梱してくださったWAVファイルを自分の環境でビルドしたもので再生したところ、うまくいくことが分かりました。 そこで、(少々雑ですが)軽く検証してみたところ、どうもファイルによって正常に動作したり、しなかったりするみたいだということが分かりました。 私のリファレンスの見逃しだったら大変申し訳ないのですが、3Dサウンドとして再生出来るファイルには何か条件があるのでしょうか?(法則性がつかめなかったもので...) 現状、私の方で検証したファイルを添付します。確認頂けたら幸いです。 ttps://drive.google.com/file/d/1AE_Whn6PdlEuo8ryeBWLmF6BDAEHdwaU/view?usp=sharing
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.9 )
名前:管理人 日時:2022/05/14 23:10

> そこで、(少々雑ですが)軽く検証してみたところ、どうもファイルによって正常に動作したり、しなかったりするみたいだということが分かりました。 > 私のリファレンスの見逃しだったら大変申し訳ないのですが、3Dサウンドとして再生出来るファイルには何か条件があるのでしょうか?(法則性がつかめなかったもので...) すみません、位置や向きによって左右に音量差が発生する条件を失念していました 3Dサウンドで位置や向きによって左右に音量差が発生するのはモノラルサウンド( 1チャンネルサウンド )のファイルなのでした orz アップしていただいたファイルを確認しても、やはり『変化しない』フォルダに入っているサウンドファイルはは全て ステレオ( 2チャンネルサウンド )で、『変化する』フォルダに入っているサウンドファイルはモノラル( 1チャンネルサウンド )でした なので、ステレオのサウンドファイルを使用される場合は Audacity などのサウンド編集ソフトでモノラルのサウンドに変換してから 使用してください、そうすることで向きや位置で左右に音量差が出るようになります m(_ _;m
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.10 )
名前:焼き鯖 日時:2022/05/15 00:06

なるほど、そういうことだったのですね… 実際に使うときはそのようにして使わせていただきます。 となると、一つだけ疑問なのですが、なぜx86環境ではステレオサウンドでも正常に動くのでしょうか?
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.11 )
名前:管理人 日時:2022/05/15 01:56

> となると、一つだけ疑問なのですが、なぜx86環境ではステレオサウンドでも正常に動くのでしょうか? 確かに…! その点を失念していました もしかしたらDXライブラリのプログラムの中で 64bit に対応できていない箇所があるのかも、と思い調べてみたのですが、 XAudio に渡しているパラメータや、XAudio から取得できる情報も x86 で動作させた場合と全く同じで、 『左右の音量差が無い』という現象以外の違いはありませんでした なので、XAudio のバグなのかもしれませんが、これは XAudio を x64 で使用した場合の仕様と考えるしか無さそうです… 推測ですが、XAudio 自体が古いAPIなので( Xbox360 の頃に作成されたAPI )当時はまだ x86 が 主流だったので x86 用の XAudio の完成度が高くなり、x64 が主流になる頃には XAudio は古くて使用者も 少ない API となってしまったので x86 ほどの整備がされなかった結果、今回のように 『x86 では◯◯なのに x64 では同じように動作しない』ことになってしまったのかもしれません… ( DXライブラリの XAudio の使い方が何か間違っていて、x86 ではたまたま正常に動作しているだけ、という可能性もありますが… )
メンテ
Re: x64だと3Dサウンドが正常に動作しない ( No.12 )
名前:焼き鯖(解決済み) 日時:2022/05/15 02:54

なるほど、APIの仕様となるともう手の出しようがないですね… 大人しくモノラルに変換して対応しようと思います。 長い間、質問にお付き合い頂きありがとうございました!
メンテ

Page: 1 |

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

   クッキー保存