DXライブラリを使っています。
ゲームプログラミングの館の13b章、14章などを組み合わせて適当なプログラムを書いてみました。
カーソルキーを押すと画像が動くプログラムです。
自前のfps表示もくっつけてあります。
これを実行すると、fpsが大体30~40くらいと表示されます。
fpsは60くらいだと思っていたのですが、みんなこんなものなのでしょうか?
それとも、自分の環境が重いだけでしょうか?
もしよろしければテストをお願いします。
プログラムコード
#include "DxLib.h"
char Key[256];
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1 ; // DXライブラリ初期化処理
int image; //ハンドルを受け取るためのint型変数を宣言
image = LoadGraph( "char.png" ) ; //back.bmpのハンドルを代入
int x=0,y=0;
int White;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
//fps取得用
char fpstext[1024]="0.00fps";
unsigned long fpskizyuntick,fpsmaetime,fpsnowtime;
int fpscount;
fpscount=0;
fpskizyuntick=GetTickCount();
fpsmaetime=fpsnowtime=0;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
//ココに処理を書いていく
if(Key[KEY_INPUT_LEFT])x-=3;
if(Key[KEY_INPUT_RIGHT])x+=3;
if(Key[KEY_INPUT_UP])y-=3;
if(Key[KEY_INPUT_DOWN])y+=3;
DrawGraph( x , y , image , FALSE ) ; //char.pngを表示
//fpsの計測
fpsnowtime=GetTickCount()-fpskizyuntick;
if(fpsnowtime>=1000) {
wsprintf(fpstext,"%d.%02dfps",
fpscount+((1000-fpsmaetime)*100/(fpsnowtime-fpsmaetime))/100,
((1000-fpsmaetime)*100/(fpsnowtime-fpsmaetime))%100);
fpskizyuntick=GetTickCount();
fpsmaetime=0;
fpscount=0;
} else {
fpscount++;
fpsmaetime=fpsnowtime;
}
DrawString( 10,10,fpstext,White);
ScreenFlip();//裏画面を表画面に反映
}
DxLib_End() ; //DXライブラリの終了処理
return 0 ;
}
追記モニタのリフレッシュレートは60ヘルツです。
