垂直同期をしなかったらScreenFlipは待つ必要が無いのだから一瞬で終わるのかと思い、
ScreenFlipの前後でGetNowCountをして時間差を求めました。
すると15~18msかかっていて約1フレーム分待っています。
垂直同期をするようにしたら18~20msくらいでした。
他の処理が重いのかと思い、(ScreenFlip前後なので他の処理は全く関係ないのですがそのときは勘違いしていました)
簡単なプログラム
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);
SetDrawScreen(DX_SCREEN_BACK);
SetWaitVSyncFlag(FALSE);
if( DxLib_Init() == -1 ) return -1;
int i,j,white=GetColor(255,255,255);
while( !ProcessMessage() ){
i = GetNowCount();
ScreenFlip();
j = GetNowCount();
ClearDrawScreen();
DrawFormatString(0,0,white,"%d",j-i); // ScreenFlip 前後の時間差を表示
}
DxLib_End();
return 0;
}
この違いは画面のサイズや画像を表示しているかいないかの違いなのかと思いますが
(それだけの違いで5msは大きい気もします)これでも9~10msかかっています。
表画面と裏画面の交換だけなのにこんなにかかるものなのでしょうか?