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
|
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の仕様となるともう手の出しようがないですね…
大人しくモノラルに変換して対応しようと思います。
長い間、質問にお付き合い頂きありがとうございました!
|