DxLib_Init();でDXライブラリの初期化を行う前にSetWaitVSyncFlag( FALSE );で垂直同期をとらない設定にすると
その後に垂直同期をとる設定にしてもうまくいかないようです。SetWaitVSyncFlag( FALSE );を初期化後に移動させると正常に動作します。
これはDXライブラリの仕様でしょうか。そこまで重要なことではないと思いましたが念の為に報告させて頂きます。
環境はWin7 64bit VC2010です。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
short int fps_count = 0;//60フレームカウント
LONGLONG fps_t = 0;//時間取得
int fps_num = 0;//fpsの数値
ChangeWindowMode(TRUE);
SetWaitVSyncFlag( FALSE );//垂直同期をとらない
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
//ここに移動させると正常に動作する。
SetWaitVSyncFlag( TRUE );//垂直同期をとる
SetDrawScreen( DX_SCREEN_BACK );
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
if(fps_count % 60 == 0){//fps計算
if(fps_count)
fps_num = int(GetNowHiPerformanceCount() - fps_t) / 60;
fps_t = GetNowHiPerformanceCount();
fps_count = 0;
}
fps_count++;
if(fps_num)//fps描画
DrawFormatString( 0 , 0 , GetColor(255,255,255) , "%.2ffps" , 1000000.00/(double)fps_num );
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}