トップページ > 記事閲覧
C#でマウスを動かしたときにFPSが落ちる
名前:はるくす 日時: 2023/05/19 23:15

環境: Windows C#(.NET6) 画面に色が変わる四角形を表示させるだけのプログラムを書いたのですが、 画面内でマウスをぐるぐる動かすとFPSが落ちてしまうようなのですが解決策などありますでしょうか。 ご教授いただければ幸いです。 ソースは以下の通りになります。 using DxLibDLL; using System.Diagnostics; namespace DXLib_Test { internal static class Program { public const int WIN_W = 1280, WIN_H = 720; static void Main() { DX.SetOutApplicationLogValidFlag(DX.FALSE); DX.SetAlwaysRunFlag(DX.TRUE); DX.SetWindowSizeChangeEnableFlag(DX.TRUE); DX.SetFullScreenResolutionMode(DX.DX_FSRESOLUTIONMODE_DESKTOP); DX.SetWindowText(""); DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(WIN_W, WIN_H, 32); DX.SetDrawScreen(DX.DX_SCREEN_BACK); DX.SetWaitVSyncFlag(DX.FALSE); DX.SetWindowStyleMode(7); DX.SetBackgroundColor(0x11, 0x11, 0x11); if (DX.DxLib_Init() == -1) return; uint a = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); while (DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) == 0) { if (1 / 60f * 1000 < stopwatch.ElapsedMilliseconds) { stopwatch.Restart(); DX.DrawBox(10, 10, 200, 200, a++, 1); } } } } }
メンテ

Page: 1 |

Re: C#でマウスを動かしたときにFPSが落ちる ( No.1 )
名前:管理人 日時:2023/05/21 00:23

『SetDrawScreen が DxLib_Init の前で呼ばれている』 『ProcessMessage が呼ばれていない』 など少しDXライブラリのプログラムとして正しくない箇所があるのが原因だと思います static void Main() のプログラムを以下のようにして試してみてください m(_ _)m ( //←←←←←←←← と書かれている行が変更 or 追加された行です ) static void Main() { DX.SetOutApplicationLogValidFlag(DX.FALSE); DX.SetAlwaysRunFlag(DX.TRUE); DX.SetWindowSizeChangeEnableFlag(DX.TRUE); DX.SetFullScreenResolutionMode(DX.DX_FSRESOLUTIONMODE_DESKTOP); DX.SetWindowText(""); DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(WIN_W, WIN_H, 32); DX.SetWaitVSyncFlag(DX.FALSE); DX.SetWindowStyleMode(7); DX.SetBackgroundColor(0x11, 0x11, 0x11); if (DX.DxLib_Init() == -1) return; DX.SetDrawScreen(DX.DX_SCREEN_BACK); //←←←←←←←← uint a = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); while (DX.ProcessMessage() == 0 && DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) == 0) //←←←←←←←← { if (1 / 60f * 1000 < stopwatch.ElapsedMilliseconds) { stopwatch.Restart(); DX.DrawBox(10, 10, 200, 200, a++, 1); DX.ScreenFlip(); //←←←←←←←← } } }
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.2 )
名前:はるくす 日時:2023/05/22 20:39

回答ありがとうございます コメントをして頂いた部分を追加してみましたが、マウスを動かすとFPSが落ちてしまうのは改善されませんでした・・・ 友人に同じプログラムを実行してもらうと正常に動くみたいなので、自分の環境が何か悪さしている可能性もあるかもしれません デバッグで実行してみたところマウスカーソルを動かしたときにCPU使用率がかなり落ちてしまいFPSが落ちているみたいです
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.3 )
名前:管理人 日時:2023/05/23 00:09

色の変化ではFPSの変化が分かりにくいので、経過フレーム数を表示するようにしてみましたが、 私の環境でもマウスを動かしても特にFPSが落ちるということはありませんでした DX.SetOutApplicationLogValidFlag(DX.FALSE); DX.SetAlwaysRunFlag(DX.TRUE); DX.SetWindowSizeChangeEnableFlag(DX.TRUE); DX.SetFullScreenResolutionMode(DX.DX_FSRESOLUTIONMODE_DESKTOP); DX.SetWindowText(""); DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(WIN_W, WIN_H, 32); DX.SetWaitVSyncFlag(DX.FALSE); DX.SetWindowStyleMode(7); DX.SetBackgroundColor(0x11, 0x11, 0x11); if (DX.DxLib_Init() == -1) return; DX.SetDrawScreen(DX.DX_SCREEN_BACK); //←←←←←←←← uint a = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int Counter = 0; //←←←←←←←← while (DX.ProcessMessage() == 0 && DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) == 0) //←←←←←←←← { if (1 / 60f * 1000 < stopwatch.ElapsedMilliseconds) { stopwatch.Restart(); DX.DrawBox(10, 10, 200, 200, a++, 1); DX.DrawString(0, 0, Counter.ToString(), DX.GetColor(255, 255, 255)); //←←←←←←←← Counter++; //←←←←←←←← DX.ScreenFlip(); //←←←←←←←← DX.ClearDrawScreen(); } } > 友人に同じプログラムを実行してもらうと正常に動くみたいなので、自分の環境が何か悪さしている可能性もあるかもしれません > デバッグで実行してみたところマウスカーソルを動かしたときにCPU使用率がかなり落ちてしまいFPSが落ちているみたいです 確かにはるくすさんの環境に何か原因があるのかもしれません ところで Visual Studio でデバッグ実行の時のみそちらの現象が発生するのでしょうか? ( 作成された exeファイルを直接実行した場合は本件の現象は発生しませんでしょうか? )
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.4 )
名前:はるくす 日時:2023/05/25 23:06

経過フレーム数を表示するようにしてマウスを変えたところ正常に動いたのでマウスが悪さしていることがわかり、 ポーリングレートを最低まで下げましたところFPSが落ちることがなくなりました(ポーリングレートを1000から125に変更) > ところで Visual Studio でデバッグ実行の時のみそちらの現象が発生するのでしょうか? > ( 作成された exeファイルを直接実行した場合は本件の現象は発生しませんでしょうか? ) デバッグ・リリースともに同じ現象が起こりました
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.5 )
名前:管理人 日時:2023/05/26 02:06

ポーリングレートが1000とのことですが、こちらの現象が発生した際に使用されたマウスは ゲーミングマウスとなりますでしょうか? 手元で再現するために私も同じマウスを購入してみようと思うのですが、 よろしければはるくすさんがお使いのマウスの製品名を教えて頂けないでしょうか? m(_ _)m
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.6 )
名前:はるくす 日時:2023/05/26 18:58

FPSが落ちる現象が起きたのはゲーミングマウスのlogiocool「G403HERO」と「G300s」になります
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.7 )
名前:管理人 日時:2023/05/27 00:56

ご返答ありがとうございます G300s を注文しました 届くのは月曜日とのことなのですが、月曜日にすぐ試して修正が必要な場合は修正を行ってご返信、 というところまで行けるかは分からないので、すみませんが来週末くらいまでを目安にお時間をください m(_ _)m
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.8 )
名前:管理人 日時:2023/05/30 01:49

G300sが届いたので試してみました 結果ですが、手元の環境ではポーリングレートを1000にして実行中の画面内でマウスカーソルを ぐるぐる動かしてもFPSが落ちることはありませんでした テストははるくすさんのプログラムを少し変更して画面左上にFPSを表示するようにして行いました using DxLibDLL; using System.Diagnostics; namespace DXLib_Test { internal static class Program { public const int WIN_W = 1280, WIN_H = 720; static void Main() { int WIN_W = 1280, WIN_H = 720; DX.SetOutApplicationLogValidFlag(DX.FALSE); DX.SetAlwaysRunFlag(DX.TRUE); DX.SetWindowSizeChangeEnableFlag(DX.TRUE); DX.SetFullScreenResolutionMode(DX.DX_FSRESOLUTIONMODE_DESKTOP); DX.SetWindowText(""); DX.ChangeWindowMode(DX.TRUE); DX.SetGraphMode(WIN_W, WIN_H, 32); DX.SetWaitVSyncFlag(DX.FALSE); DX.SetWindowStyleMode(7); DX.SetBackgroundColor(0x11, 0x11, 0x11); if (DX.DxLib_Init() == -1) return; DX.SetDrawScreen(DX.DX_SCREEN_BACK); uint a = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int PrevTime = DX.GetNowCount(); int FPS = 0; int FPSCounter = 0; while (DX.ProcessMessage() == 0 && DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) == 0) { if (1 / 60f * 1000 < stopwatch.ElapsedMilliseconds) { FPSCounter++; int NowTime = DX.GetNowCount(); if (NowTime - PrevTime > 1000) { PrevTime = NowTime; FPS = FPSCounter; FPSCounter = 0; } stopwatch.Restart(); DX.DrawBox(10, 10, 200, 200, a++, 1); DX.DrawString(0, 0, FPS.ToString(), DX.GetColor(255, 255, 255)); DX.ScreenFlip(); DX.ClearDrawScreen(); } } } } } 手元の環境はモニタのリフレッシュレートが60Hzなので、大体58〜60の値が画面左上に 表示されます( マウスを動かしても値に変化はありませんでした ) はるくすさんの環境では上記のプログラムを実行してマウスを動かすと画面左上に 表示される数値が下がってしまうか試してみて頂けないでしょうか? m(_ _)m
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.9 )
名前:はるくす 日時:2023/05/31 14:09

調査ありがとうございます 自分の環境でポーリングレートを1000にしてプログラムを動かしたところFPSが1まで落ちてしまいました drive.google.com/file/d/1HtkX6tALsaNPHBVstxr9dNU8WZ7ELIMN/view?usp=sharing
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.10 )
名前:管理人 日時:2023/06/02 01:35

ご確認ありがとうございます FPSが1とは凄い処理落ちですね… 私の手元の環境と何かが異なることが原因となっている可能性がありますので、テストプログラムの中の DX.SetOutApplicationLogValidFlag(DX.FALSE); ↑ こちらの行をコメントアウトして実行すると作成される Log.txt の内容をまるごと 掲示板に貼り付けて頂けないでしょうか? m(_ _;m
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.11 )
名前:はるくす 日時:2023/06/03 16:37

ログファイルを出力しましたので確認お願いいたします 0:画面モード変更処理を開始します 0: ChangeWindowMode実行 1: ウインドウモードフラグが立てられました 4: DXライブラリの初期化処理開始 7: システムの情報を出力します 8: DXライブラリ Ver3.24b 8: 論理プロセッサの数 : 8 9: OS Windows10 ( Build 19045 ) 109: 現時点のCPU動作速度:大体3.57GHz 109: MMX命令を使用します 109: SSE命令が使用可能です 109: SSE2命令が使用可能です 110: CPUベンダ:GenuineIntel 112: CPU名:Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz 112: COMの初期化... 失敗 112: 非同期読み込み処理の初期化...成功 122: ファイルアクセス処理の初期化...成功 123: メモリ総量:49070.32MB 空きメモリ領域:30150.46MB 123: タイマーの精度を検査します 123: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 124: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 124: 126: ソフトの二重起動検査... 二重起動はされていませんでした 126: ウインドウクラスを登録します... 登録に成功しました 127: ウインドウモード起動用のウインドウを作成します 127: ディスプレイ情報のセットアップ開始 128: モニターの数:2 ディスプレイデバイスの数:4 129: No.0 モニター名:\\.\DISPLAY6 2560x1440 32bit 59Hz 96x96dpi 129: No.1 モニター名:\\.\DISPLAY7 2560x1080 32bit 60Hz 96x96dpi 156: ディスプレイ情報のセットアップ完了 156: ウインドウ矩形 ( 624, 309 )-( 1920, 1068 ) 162: ウインドウの作成に成功しました 163: ウインドウを表示します 187: IMEを無効にしました 190: ウインドウスタイルをウインドウモード用に変更します... 完了 211: XInput DLL の読み込み中... 成功 213: DirectInput関係初期化処理 213: DirectInput8 の取得を試みます...成功 229: 引き続き初期化処理... 初期化成功 236: ジョイパッドの初期化... 237: XInput 対応コントローラーのチェックを開始します 238: XInput 対応コントローラー No.0 をチェック 238: XInput 対応コントローラー No.0 の接続は確認できませんでした 239: XInput 対応コントローラー No.1 をチェック 241: XInput 対応コントローラー No.1 の接続は確認できませんでした 241: XInput 対応コントローラー No.2 をチェック 243: XInput 対応コントローラー No.2 の接続は確認できませんでした 243: XInput 対応コントローラー No.3 をチェック 244: XInput 対応コントローラー No.3 の接続は確認できませんでした 244: XInput 対応コントローラーのチェック完了 244: DirectInput 対応ジョイパッドの列挙を開始します 259: DirectInput 対応入力装置を検出しました 259: Device Product GUID : 1f02c252,0000,0000,00,00,50,49,44,56,49,44 259: Device Instance GUID : b7a528b0,2441,11ea,80,01,44,45,53,54,00,00 259: DirectInputDevice8 の作成... 成功 261: DirectInputDevice の情報を取得します... 成功 263: Device Product Name : VIRGOO TURBOCHARGER 263: Device Instance Name : VIRGOO TURBOCHARGER 263: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致 263: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致 264: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致 732: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功 735: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功 736: DirectInputDevice から取得する X軸 の値の範囲を設定... 失敗 Error Code :0x80070002 737: DirectInputDevice から取得する Y軸 の値の範囲を設定... 失敗 Error Code :0x80070002 737: DirectInputDevice から取得する Z軸 の値の範囲を設定... 失敗 Error Code :0x80070002 738: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 失敗 Error Code :0x80070002 738: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 失敗 Error Code :0x80070002 739: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 失敗 Error Code :0x80070002 739: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 12 個です 740: DirectInputDevice の X軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 741: DirectInputDevice の Y軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 743: DirectInputDevice の Z軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 744: DirectInputDevice の Rx軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 747: DirectInputDevice の Ry軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 748: DirectInputDevice の Rz軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 755: DirectInputDevice の DirectInputEffect No.0 を作成... 失敗 Error Code :0x80004001 764: DirectInputDevice の DirectInputEffect No.1 を作成... 失敗 Error Code :0x80004001 765: DirectInputDevice の通知処理用の Event を作成... 成功 766: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功 768: DirectInputDevice のアクセス権を取得... 成功 780: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します 780: 検出した DirectInput 対応入力装置の初期化は正常に終了しました 782: DirectInput 対応入力装置を検出しました 783: Device Product GUID : 1f02c252,0000,0000,00,00,50,49,44,56,49,44 784: Device Instance GUID : b7a54fc0,2441,11ea,80,02,44,45,53,54,00,00 784: DirectInputDevice8 の作成... 成功 787: DirectInputDevice の情報を取得します... 成功 789: Device Product Name : VIRGOO TURBOCHARGER 790: Device Instance Name : VIRGOO TURBOCHARGER 790: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致 791: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致 791: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致 1321: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功 1322: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功 1322: DirectInputDevice から取得する X軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1323: DirectInputDevice から取得する Y軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1324: DirectInputDevice から取得する Z軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1325: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1325: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1326: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 失敗 Error Code :0x80070002 1327: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 0 個です 1327: DirectInputDevice の X軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1328: DirectInputDevice の Y軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1328: DirectInputDevice の Z軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1329: DirectInputDevice の Rx軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1330: DirectInputDevice の Ry軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1331: DirectInputDevice の Rz軸 のデッドゾーンを設定... 失敗 Error Code :0x80070002 1331: DirectInputDevice の DirectInputEffect No.0 を作成... 失敗 Error Code :0x80004001 1332: DirectInputDevice の DirectInputEffect No.1 を作成... 失敗 Error Code :0x80004001 1333: DirectInputDevice の通知処理用の Event を作成... 成功 1333: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功 1334: DirectInputDevice のアクセス権を取得... 成功 1336: 検出した DirectInput 対応入力装置を入力ナンバー 1 で登録します 1336: 検出した DirectInput 対応入力装置の初期化は正常に終了しました 1351: DirectInput 対応ジョイパッドの列挙終了 1353: ジョイパッドの初期化は正常に終了しました 1353: マウスデバイスの初期化... 初期化成功 1354: キーボードデバイスの初期化... 初期化成功 1355: DirectInput 関連の初期化は正常に終了しました 1358: WASAPI の初期化を行います 1368: デバイス名 : Main Out 1-2 (UltraLite-mk5) 1372: デフォルト遅延時間 : 10.000 ms 1373: 最小遅延時間 : 3.000 ms 1374: 遅延時間 : 10.000 ms 1375: チャンネル数   : 2 ch 1377: 量子化ビット深度 : 32 bit 1377: 有効ビット深度  : 32 bit 1377: サンプリングレート : 44100 Hz 1377: データ形式 : 浮動小数点型 1389: 動作モード : 共有モード 1390: WASAPI の初期化は正常に終了しました 1393: d3d11.dll の読み込み.... 成功 1396: dxgi.dll の読み込み.... 成功 1397: API CreateDXGIFactory2 のアドレスを取得します.... 成功 1398: IDXGIFactory2 を作成します.... 成功 1400: API CreateDXGIFactory6 のアドレスを取得します.... 成功 1401: IDXGIAdapter を列挙 1401: Adapter No.0 Desc:NVIDIA GeForce RTX 2070 VRAM:8019MB 1401: Output Device No.0 Name:\\.\DISPLAY6 ( 0, 0 )-( 2560, 1440 ) 1401: Output Device No.1 Name:\\.\DISPLAY7 ( 0, -1080 )-( 2560, 0 ) 1402: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB 1402: API D3D11CreateDevice のアドレスを取得します.... 成功 1403: IDXGIAdapter を取得します.... 成功 1404: IDXGIAdapter1 を取得します.... 成功 1404: IDXGIAdapter2 を取得します.... 成功 1404: IDXGIAdapter3 を取得します.... 成功 1405: IDXGIAdapter4 を取得します.... 成功 1405: Direct3D 11 FeatureLevel 11_0 以上を対象とします 1406: ID3D11Device オブジェクトを取得します.... 成功 1565: IDXGIDevice1 を取得します.... 成功 1568: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1568: [ウインドウモード 1280x720 ( 672, 371 )-( 1952, 1091 )] 1568: IDXGISwapChain2 を作成します.... 成功 1584: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 1584: IDXGIOutput を取得します.... 成功 1585: Graphics Device:NVIDIA GeForce RTX 2070 1586: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1586: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1586: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1586: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1586: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1587: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1587: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 1587: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1588: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 1588: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1588: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1588: DXT2テクスチャフォーマットは使えません 1589: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1589: DXT4テクスチャフォーマットは使えません 1589: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1589: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 1590: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 1590: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1590: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1590: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1591: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1591: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1591: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1591: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1592: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1592: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1592: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1592: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1592: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1593: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1593: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1593: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1593: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1593: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1594: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1594: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1594: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1594: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1595: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1595: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1595: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1595: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1596: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 1596: 同時にレンダリングできるバッファの数:8 1596: 最大テクスチャサイズ 幅:16384 高さ:16384 1596: 標準描画用の頂点バッファの作成.... 成功 1597: シェーダーコード関係の初期化.... 成功 1605: 各種シェーダー用定数バッファの作成.... 成功 1606: 各種 ID3D11InputLayout の作成.... 成功 1628: 画像の単純転送処理の初期化... 成功 1630: 深度バッファを作成します.... 成功 1634: フォントの初期化を行います 1637: フォントの初期化は正常に終了しました 1644: 文字コードバッファの初期化を行います... 完了しました 1660: DXライブラリの初期化処理終了 31058: ウインドウを閉じようとしています 31069: ウインドウが破棄されようとしています 31070: ソフトを終了する準備が整いました
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.12 )
名前:管理人 日時:2023/06/03 23:48

ログファイルの貼り付けありがとうございます ログを拝見する限りでは特に原因となりそうな箇所はありませんでしたが、 VIRGOO TURBOCHARGER という特殊なデバイスが接続されていますので 恐らく原因ではないとは思いますが、念のためよろしければこちらのデバイスを 外した状態で No.8 のテストプログラムを実行してみて頂けないでしょうか? m(_ _)m
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.13 )
名前:はるくす 日時:2023/06/06 01:32

ログファイルの調査ありがとうございます VIRGOO TURBOCHARGERを外して計測しましたがFPSが下がる現象は変わりありませんでした
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.14 )
名前:管理人 日時:2023/06/07 00:13

ご確認ありがとうございます うーん何が原因なのか現時点ではわかりません… No.8 の C# のプログラムとほぼ同じ動作を行う C++ のプログラムを作成してみました #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int WIN_W = 1280, WIN_H = 720; SetOutApplicationLogValidFlag(FALSE); SetAlwaysRunFlag(TRUE); SetWindowSizeChangeEnableFlag(TRUE); SetFullScreenResolutionMode(DX_FSRESOLUTIONMODE_DESKTOP); SetWindowText(""); ChangeWindowMode(TRUE); SetGraphMode(WIN_W, WIN_H, 32); SetWaitVSyncFlag(FALSE); SetWindowStyleMode(7); SetBackgroundColor(0x11, 0x11, 0x11); if (DxLib_Init() == -1) return 0; SetDrawScreen(DX_SCREEN_BACK); DWORD a = 0; LONGLONG PrevTime2 = GetNowHiPerformanceCount(); int PrevTime = GetNowCount(); int FPS = 0; int FPSCounter = 0; while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { LONGLONG NowTime2 = GetNowHiPerformanceCount(); if ( 1000000 / 60 < NowTime2 - PrevTime2 ) { FPSCounter++; int NowTime = GetNowCount(); if (NowTime - PrevTime > 1000) { PrevTime = NowTime; FPS = FPSCounter; FPSCounter = 0; } PrevTime2 = NowTime2; DrawBox(10, 10, 200, 200, a++, 1); DrawFormatString(0, 0, GetColor(255, 255, 255), "%d", FPS ); ScreenFlip(); ClearDrawScreen(); } } return 0; // ソフトの終了 } 上記のプログラムをビルドして作成した実行ファイルをこちらにアップしましたので、 https://dxlib.xsrv.jp/temp/MouseCursorTest.zip お手数で申し訳ありませんが zip ファイルの中にある MouseCursorTest.exe を実行して これまでと同様にマウスカーソルを動かすと FPS が下がってしまうかご確認いただけないでしょうか? m(_ _;m ( 本件の現象が C# に由来するものなのか、C# 関係なく発生するものなのかを確認したいと思います )
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.15 )
名前:はるくす 日時:2023/06/09 19:47

グラフィックボードのドライバを更新・PCの再起動をしたところだいぶ軽くなりました MouseCursorTest.exeと自分が作ったもの(C#)で試してみても45〜60を行ったり来たりしている状態になりました(マウスを動かさなければ60FPS)
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.16 )
名前:管理人 日時:2023/06/09 22:42

C++ でも C# でもほぼ同じFPSだったとのことで、C# が由来ではないということですね そして、グラフィックボードのドライバ更新とPCの再起動でそこまで軽くなるとは驚きです… 現在PCに搭載されているグラフィックボード( GeForce RTX 2070 ) は最初からお使いのPCに搭載されていたものでしょうか? それとも後からはるくすさんが購入されて載せ替えたものでしょうか?
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.17 )
名前:はるくす 日時:2023/06/26 16:03

自作PCで最初から載せていたものになります
メンテ
Re: C#でマウスを動かしたときにFPSが落ちる ( No.18 )
名前:管理人 日時:2023/06/26 22:58

なんと、ご自作なのですね 一応のご確認なのですが、 GeForce RTX 2070 は補助電源が必要となりますが、 GeForce RTX 2070 に補助電源は正しく接続できていますでしょうか? あと No.11 に貼り付けていただいたログのこちらの部分を拝見する限りでは 129: No.0 モニター名:\\.\DISPLAY6 2560x1440 32bit 59Hz 96x96dpi 129: No.1 モニター名:\\.\DISPLAY7 2560x1080 32bit 60Hz 96x96dpi 片方のモニターのリフレッシュレートが 59Hz で、もう片方は 60Hz となっているようです 59Hz もしくは 60Hz に統一すると現象が改善するかもしれませんので、よろしければお試しください m(_ _)m
メンテ

Page: 1 |

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

   クッキー保存