表題の通りなのですが、追加で発生条件があります。
1.SetAlwaysRunFlag(true)を指定して、
2.XBOX コントローラーを接続して、(有線の場合は未確認。今から検証したいと思います。)
3.DxLib::GetMouseInput 関数を呼び出す。
→ と処理落ちする。
いずれか1つでも満たさない場合は処理落ちしません。
また、DxLib::GetMouseInput 関数の呼び出しが1回でも FPS は下がるのですが、数回呼ぶと目に見えて処理落ちします。
▼開発環境▼
Windows 11 / Visual Studio 2022 / DxLib 3.24d
XBOX MODEL NO.:1914
XBOX コントローラーは Bluetooth にて接続しています。
▼実行時の画面録画▼
ttps://14.gigafile.nu/0203-b2527f6424cc11976baa3d9c1f09327ea
▼検証用コード▼
```C++
#include <format>
#include <DxLib.h>
int WINAPI WinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ LPSTR, _In_ int) {
DxLib::SetAlwaysRunFlag(true);
DxLib::ChangeWindowMode(true);
if (DxLib::DxLib_Init() == -1) {
return 0;
}
for (std::uint64_t time = DxLib::GetNowHiPerformanceCount();
DxLib::ProcessMessage() == 0 && DxLib::CheckHitKey(KEY_INPUT_ESCAPE) == 0; )
{
for (int i = 0; i < 100; ++i) {
const std::uint32_t input = DxLib::GetMouseInput();
}
const std::uint64_t delta = DxLib::GetNowHiPerformanceCount() - time;
time = time + delta;
DxLib::ClearDrawScreen();
DxLib::DrawString(0, 0, std::format(TEXT("FPS: {}"), 1'000'000 / delta).c_str(), 0xffffff);
DxLib::ScreenFlip();
}
DxLib::DxLib_End();
return 0;
}
```
▼Log(画面録画時のものです)▼
```
0:ChangeWindowMode実行
0:ウインドウモードフラグが立てられました
10:DXライブラリの初期化処理開始
14: システムの情報を出力します
16: DXライブラリ Ver3.24d
16: 論理プロセッサの数 : 8
18: OS Windows11 ( Build 26100 )
121: 現時点のCPU動作速度:大体2.31GHz
122: MMX命令を使用します
123: SSE命令が使用可能です
125: SSE2命令が使用可能です
127: CPUベンダ:AuthenticAMD
136: CPU名:AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx
138: COMの初期化... 成功
150: 非同期読み込み処理の初期化...成功
152: ファイルアクセス処理の初期化...成功
155: メモリ総量:14210.23MB 空きメモリ領域:2453.54MB
156: タイマーの精度を検査します
157: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
158: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz
160:
163: ソフトの二重起動検査... 二重起動はされていませんでした
165: ウインドウクラスを登録します... 登録に成功しました
167: ウインドウモード起動用のウインドウを作成します
169: ディスプレイ情報のセットアップ開始
172: モニターの数:1 ディスプレイデバイスの数:6
173: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 96x96dpi
185: ディスプレイ情報のセットアップ完了
186: ウインドウ矩形 ( 624, 249 )-( 1280, 768 )
197: ウインドウの作成に成功しました
198: ウインドウを表示します
258: IMEを無効にしました
261: ウインドウスタイルをウインドウモード用に変更します... 完了
298: XInput DLL の読み込み中... 成功
308: DirectInput関係初期化処理
309: DirectInput8 の取得を試みます...成功
366: 引き続き初期化処理... 初期化成功
385: ジョイパッドの初期化...
385: XInput 対応コントローラーのチェックを開始します
386: XInput 対応コントローラー No.0 をチェック
395: XInput 対応コントローラー No.0 の接続を確認しました
397: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
397: XInput 対応コントローラー No.1 をチェック
399: XInput 対応コントローラー No.1 の接続は確認できませんでした
400: XInput 対応コントローラー No.2 をチェック
402: XInput 対応コントローラー No.2 の接続は確認できませんでした
403: XInput 対応コントローラー No.3 をチェック
404: XInput 対応コントローラー No.3 の接続は確認できませんでした
405: XInput 対応コントローラーのチェック完了
406: DirectInput 対応ジョイパッドの列挙を開始します
523: DirectInput 対応入力装置を検出しました
525: Device Product GUID : 0b13045e,0000,0000,00,00,50,49,44,56,49,44
526: Device Instance GUID : ffc90090,c900,11ee,80,02,44,45,53,54,00,00
527: DirectInputDevice8 の作成... 成功
530: DirectInputDevice の情報を取得します... 成功
532: Device Product Name : Bluetooth LE XINPUT 互換入力デバイス
533: Device Instance Name : Bluetooth LE XINPUT 互換入力デバイス
535: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
537: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
540: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 一致
1591: 検出した DirectInput 対応入力装置の初期化を中断します
1604: DirectInput 対応ジョイパッドの列挙終了
1605: ジョイパッドの初期化は正常に終了しました
1606: マウスデバイスの初期化... 初期化成功
1608: キーボードデバイスの初期化... 初期化成功
1620: DirectInput 関連の初期化は正常に終了しました
1630: WASAPI の初期化を行います
1643: デバイス名 : Speaker (Realtek(R) Audio)
2014: デフォルト遅延時間 : 10.667 ms
2015: 最小遅延時間 : 3.000 ms
2016: 遅延時間 : 10.667 ms
2018: チャンネル数 : 2 ch
2019: 量子化ビット深度 : 32 bit
2020: 有効ビット深度 : 32 bit
2021: サンプリングレート : 48000 Hz
2022: データ形式 : 浮動小数点型
2353: 動作モード : 共有モード
2354: WASAPI の初期化は正常に終了しました
2366: d3d11.dll の読み込み.... 成功
2386: dxgi.dll の読み込み.... 成功
2387: API CreateDXGIFactory2 のアドレスを取得します.... 成功
2388: IDXGIFactory2 を作成します.... 成功
2399: API CreateDXGIFactory6 のアドレスを取得します.... 成功
2401: IDXGIAdapter を列挙
2402: Adapter No.0 Desc:AMD Radeon(TM) RX Vega 10 Graphics VRAM:2032MB
2403: Output Device No.0 Name:\\.\DISPLAY1 ( 0, 0 )-( 1920, 1080 )
2405: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB
2406: API D3D11CreateDevice のアドレスを取得します.... 成功
2408: IDXGIAdapter を取得します.... 成功
2410: IDXGIAdapter1 を取得します.... 成功
2412: IDXGIAdapter2 を取得します.... 成功
2414: IDXGIAdapter3 を取得します.... 成功
2416: IDXGIAdapter4 を取得します.... 成功
2417: Direct3D 11 FeatureLevel 11_0 以上を対象とします
2418: ID3D11Device オブジェクトを取得します.... 成功
2466: IDXGIDevice1 を取得します.... 成功
2469: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました
2470: [ウインドウモード 640x480 ( 640, 275 )-( 1280, 755 )]
2471: IDXGISwapChain2 を作成します.... 成功
2474: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000
2475: IDXGIOutput を取得します.... 成功
2478: Graphics Device:AMD Radeon(TM) RX Vega 10 Graphics
2478: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
2479: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です
2480: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です
2481: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です
2482: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
2483: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
2484: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です
2485: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
2487: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です
2488: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
2489: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です
2489: DXT2テクスチャフォーマットは使えません
2490: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です
2491: DXT4テクスチャフォーマットは使えません
2492: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です
2493: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です
2493: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です
2495: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
2495: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
2497: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
2498: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
2498: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
2499: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
2500: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
2501: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
2502: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
2503: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
2504: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
2504: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
2505: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
2506: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
2507: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
2508: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
2508: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
2509: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
2509: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
2510: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
2511: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
2512: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
2513: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
2513: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
2515: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
2516: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1
2516: 同時にレンダリングできるバッファの数:8
2517: 最大テクスチャサイズ 幅:16384 高さ:16384
2519: 標準描画用の頂点バッファの作成.... 成功
2520: シェーダーコード関係の初期化.... 成功
2558: 各種シェーダー用定数バッファの作成.... 成功
2561: 各種 ID3D11InputLayout の作成.... 成功
2607: 画像の単純転送処理の初期化... 成功
2608: 深度バッファを作成します.... 成功
2616: フォントの初期化を行います
2619: フォントの初期化は正常に終了しました
2689: 文字コードバッファの初期化を行います... 完了しました
2710:DXライブラリの初期化処理終了
45788:ジョイパッドの初期化...
45789: XInput 対応コントローラーのチェックを開始します
45791: XInput 対応コントローラー No.0 をチェック
45792: XInput 対応コントローラー No.0 の接続は確認できませんでした
45794: XInput 対応コントローラー No.1 をチェック
45796: XInput 対応コントローラー No.1 の接続は確認できませんでした
45797: XInput 対応コントローラー No.2 をチェック
45799: XInput 対応コントローラー No.2 の接続は確認できませんでした
45800: XInput 対応コントローラー No.3 をチェック
45802: XInput 対応コントローラー No.3 の接続は確認できませんでした
45805: XInput 対応コントローラーのチェック完了
45807: DirectInput 対応ジョイパッドの列挙を開始します
45918: DirectInput 対応ジョイパッドの列挙終了
45918:ジョイパッドの初期化は正常に終了しました
59598:ジョイパッドの初期化...
59599: XInput 対応コントローラーのチェックを開始します
59601: XInput 対応コントローラー No.0 をチェック
59609: XInput 対応コントローラー No.0 の接続を確認しました
59612: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
59613: XInput 対応コントローラー No.1 をチェック
59615: XInput 対応コントローラー No.1 の接続は確認できませんでした
59616: XInput 対応コントローラー No.2 をチェック
59617: XInput 対応コントローラー No.2 の接続は確認できませんでした
59620: XInput 対応コントローラー No.3 をチェック
59621: XInput 対応コントローラー No.3 の接続は確認できませんでした
59622: XInput 対応コントローラーのチェック完了
59624: DirectInput 対応ジョイパッドの列挙を開始します
59955: DirectInput 対応入力装置を検出しました
59962: Device Product GUID : 0b13045e,0000,0000,00,00,50,49,44,56,49,44
59968: Device Instance GUID : ffc90090,c900,11ee,80,02,44,45,53,54,00,00
59977: DirectInputDevice8 の作成... 成功
59992: DirectInputDevice の情報を取得します... 成功
60028: Device Product Name : Bluetooth LE XINPUT 互換入力デバイス
60119: Device Instance Name : Bluetooth LE XINPUT 互換入力デバイス
60302: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
60498: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
60638: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... ジョイパッドの初期化...
60698: XInput 対応コントローラーのチェックを開始します
60746: XInput 対応コントローラー No.0 をチェック
60751: XInput 対応コントローラー No.0 の接続を確認しました
60757: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
60766: XInput 対応コントローラー No.1 をチェック
60771: XInput 対応コントローラー No.1 の接続は確認できませんでした
60775: XInput 対応コントローラー No.2 をチェック
60779: XInput 対応コントローラー No.2 の接続は確認できませんでした
60788: XInput 対応コントローラー No.3 をチェック
60832: XInput 対応コントローラー No.3 の接続は確認できませんでした
60851: XInput 対応コントローラーのチェック完了
60869: DirectInput 対応ジョイパッドの列挙を開始します
61289: DirectInput 対応入力装置を検出しました
61297: Device Product GUID : 0b13045e,0000,0000,00,00,50,49,44,56,49,44
61303: Device Instance GUID : ffc90090,c900,11ee,80,02,44,45,53,54,00,00
61315: DirectInputDevice8 の作成... 成功
61407: DirectInputDevice の情報を取得します... 成功
61471: Device Product Name : Bluetooth LE XINPUT 互換入力デバイス
61476: Device Instance Name : Bluetooth LE XINPUT 互換入力デバイス
61485: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
61499: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
61511: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 一致
63379: 検出した DirectInput 対応入力装置の初期化を中断します
63406: DirectInput 対応ジョイパッドの列挙終了
63411: ジョイパッドの初期化は正常に終了しました
64805: 一致
64810: 検出した DirectInput 対応入力装置の初期化を中断します
64889: DirectInput 対応ジョイパッドの列挙終了
64897:ジョイパッドの初期化は正常に終了しました
74032:ジョイパッドの初期化...
74033: XInput 対応コントローラーのチェックを開始します
74034: XInput 対応コントローラー No.0 をチェック
74037: XInput 対応コントローラー No.0 の接続は確認できませんでした
74041: XInput 対応コントローラー No.1 をチェック
74042: XInput 対応コントローラー No.1 の接続は確認できませんでした
74044: XInput 対応コントローラー No.2 をチェック
74045: XInput 対応コントローラー No.2 の接続は確認できませんでした
74047: XInput 対応コントローラー No.3 をチェック
74049: XInput 対応コントローラー No.3 の接続は確認できませんでした
74051: XInput 対応コントローラーのチェック完了
74053: DirectInput 対応ジョイパッドの列挙を開始します
74223: DirectInput 対応ジョイパッドの列挙終了
74224:ジョイパッドの初期化は正常に終了しました
90802:ジョイパッドの初期化...
90805: XInput 対応コントローラーのチェックを開始します
90811: XInput 対応コントローラー No.0 をチェック
90828: XInput 対応コントローラー No.0 の接続を確認しました
90844: XInput 対応コントローラー No.0 を入力ナンバー 0 で登録します
90851: XInput 対応コントローラー No.1 をチェック
90857: XInput 対応コントローラー No.1 の接続は確認できませんでした
90866: XInput 対応コントローラー No.2 をチェック
90877: XInput 対応コントローラー No.2 の接続は確認できませんでした
90881: XInput 対応コントローラー No.3 をチェック
90884: XInput 対応コントローラー No.3 の接続は確認できませんでした
90888: XInput 対応コントローラーのチェック完了
90890: DirectInput 対応ジョイパッドの列挙を開始します
91220: DirectInput 対応入力装置を検出しました
91223: Device Product GUID : 0b13045e,0000,0000,00,00,50,49,44,56,49,44
91226: Device Instance GUID : ffc90090,c900,11ee,80,02,44,45,53,54,00,00
91228: DirectInputDevice8 の作成... 成功
91235: DirectInputDevice の情報を取得します... 成功
91242: Device Product Name : Bluetooth LE XINPUT 互換入力デバイス
91245: Device Instance Name : Bluetooth LE XINPUT 互換入力デバイス
91246: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
91252: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
91258: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 一致
92633: 検出した DirectInput 対応入力装置の初期化を中断します
92658: DirectInput 対応ジョイパッドの列挙終了
92660:ジョイパッドの初期化は正常に終了しました
```