BandicamのFPS表示ではFPSが安定しないとのことですが、
FPS表示をDXライブラリ側で行うようにした以下のようなプログラムの場合は、FPSはどうなるでしょうか?
( 正常に動作すれば左上のFPS表示は144Hzの環境でしたら143〜145くらいの範囲になる筈ですが… )
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int x, add ;
LONGLONG Time, NowTime ;
LONGLONG Frequency ;
int DispFPS ;
int FPSCounter ;
int MovieHandle ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// 解像度を設定
SetGraphMode( 1920, 1080, 32 ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 動画の読み込み
MovieHandle = LoadGraph( "Movie.mp4" ) ;
// 動画の再生開始
PlayMovieToGraph( MovieHandle, DX_PLAYTYPE_LOOP ) ;
// システムタイマーの1秒間あたりのカウント数を取得しておく
Frequency = GetSysPerformanceFrequency() ;
// FPS計測用の時間を初期化
Time = GetNowSysPerformanceCount() ;
NowTime = GetNowSysPerformanceCount() ;
// FPS表示用の変数を初期化
DispFPS = 0 ;
FPSCounter = 0 ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// 動画を描画
DrawGraph( 0, 0, MovieHandle, FALSE ) ;
// FPSを描画
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "FPS:%d", DispFPS ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
// FPSカウンタをインクリメント
FPSCounter++ ;
// 現在の時間が前回表示FPSを更新した時間から1秒経過していたら表示FPSを更新する
NowTime = GetNowSysPerformanceCount() ;
if( NowTime - Time >= Frequency )
{
// 表示FPS値を更新
DispFPS = FPSCounter ;
// FPSカウンタをリセット
FPSCounter = 0 ;
// 表示FPSを更新した時間を保存
Time = NowTime ;
}
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}