トップページ > 記事閲覧
非アクティブ時に高速動作する
名前:8127 日時: 2018/10/16 22:49

たびたびお世話になっています。 SetAlwaysRunFlag(TRUE)で非アクティブ時も動作するように設定した場合、ウィンドウを最小化すると ゲームが異常な速度(おそらくCPU能力の限界)で動作するので報告します。 VS2017/Dxlib暫定最新版/win7 以下のプログラムで、画面に表示される数字は(リフレッシュレートが普通の環境なら)一秒に60増加するはずですが、 ウィンドウを最小化して1秒ほど待ってウィンドウを元に戻すと数字が10000ほど増えています。 #include "DxLib.h" namespace { constexpr int windowWidth = 640; constexpr int windowHeight = 480; } bool dxlibInit() { ChangeWindowMode(TRUE); //ウインドウモードにする SetWindowSize(windowWidth, windowHeight); SetAlwaysRunFlag(TRUE); // DXライブラリ初期化処理 if (DxLib_Init() == -1) { return false; } SetDrawScreen(DX_SCREEN_BACK); //描画先を裏画面に設定 return true; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (!dxlibInit()) { // エラーが起きたら直ちに終了 return 1; } int count = 0; while (true) { if (ProcessMessage() == -1)break; ScreenFlip(); ClearDrawScreen(); DrawFormatString(100, 100, GetColor(255, 255, 255), "%d", count); ++count; } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: 非アクティブ時に高速動作する ( No.1 )
名前:8127 日時:2018/10/16 23:00

これ、バグだと思って報告したのですが、よく考えると 最小化時は画面更新が無いので垂直同期を待つ必要がなく、正しい挙動とも思えてきました・・・
メンテ
Re: 非アクティブ時に高速動作する ( No.2 )
名前:管理人 日時:2018/10/17 02:21

はい、仕様となります ウィンドウが最小化されているかどうかは GetWindowMinSizeFlag() の戻り値が TRUE かどうかで判断できますので、 GetWindowMinSizeFlag() の戻り値が TRUE の場合は自前でウエイト処理を行うようにしてみてください m(_ _)m
メンテ
Re: 非アクティブ時に高速動作する ( No.3 )
名前:8127(解決) 日時:2018/10/17 12:34

ご返信ありがとうございます。 自前でウェイトするようにします。
メンテ

Page: 1 |

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

   クッキー保存