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
|