トップページ > 過去ログ > 記事閲覧
AlwaysRunFlagがTRUE時のScreenFlip
名前:DG 日時: 2010/10/10 19:43

AlwaysRunFlagがTRUE時に ウィンドウを他のウィンドウで覆いつくしたり、最小化したりすると WaitVSyncFlagがTRUEでも ScreenFlipがVsync待ちを行わなくなるようなのですが これは仕様でしょうか? 以下テストソースです ウィンドウを他のウィンドウで覆いつくしたり 最小化したりすると、CPU使用率がグンと上がり フレームカウンターがすごい勢いで増えます。 ウィンドウ内の黒い部分が一部でも見えていればこの現象は起らない模様です。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { DxLib::ChangeWindowMode(TRUE); DxLib::SetWaitVSyncFlag(TRUE); if( DxLib::DxLib_Init() == -1 ) return -1; DxLib::SetAlwaysRunFlag(TRUE); if( DxLib::SetDrawScreen( DX_SCREEN_BACK ) != 0 ) return -1; int frame = 0; while (true) { if (DxLib::ProcessMessage() != 0) break; DxLib::ClearDrawScreen(); DxLib::DrawFormatString(0,0,0x00FFFFFF,"%dframe",frame); frame++; DxLib::ScreenFlip(); } // キー入力待ち DxLib::WaitKey(); // DXライブラリの後始末 DxLib::DxLib_End(); // ソフトの終了 return 0; }

Page: 1 |

Re: AlwaysRunFlagがTRUE時のScreenFlip ( No.1 )
名前:DG 日時:2010/10/10 20:01

あ、環境を書き忘れました。 OSは、WindowsXP(32bit) SP3 DxLibのバージョンは、3.03 です。
Re: AlwaysRunFlagがTRUE時のScreenFlip ( No.2 )
名前:DG 日時:2010/10/10 20:05

度々の書き込みすみません DxLibが最新版でなかったので バージョン3.04でリビルドしてみましたが 結果は同様でした
Re: AlwaysRunFlagがTRUE時のScreenFlip ( No.3 )
名前:管理人 日時:2010/10/16 14:48

ご報告ありがとうございます 私の環境でもウインドウを他のウインドウで覆い隠したり最小化を行った場合に ScreenFlip が VSYNC待ちをしない現象を確認しました 修正版をアップしましたので、よろしければ DGさんの環境でも正常に動作するかお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: AlwaysRunFlagがTRUE時のScreenFlip ( No.4 )
名前:DG 日時:2010/10/16 16:50

こちらの環境でも確認しました。 対応ありがとうございましたm(_ _)m

Page: 1 |