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ヘルツです。
