fpsが30と表示される

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
琉cifer

fpsが30と表示される

#1

投稿記事 by 琉cifer » 13年前

新・ゲームプログラミングの館の
3.14章 特定のFPSで動作させる方法を見ながらやったのですが
60.0と表示されず、30.0と表示されます。
自分のモニターの画面のリフレッシュレートは60ヘルツになってます。
原因がわかる方がいましたら教えてください

コード:

#include <math.h>
#include "DxLib.h"

class Fps{
	int mStartTime;	//計測開始時刻
	int mCount;	//カウンタ
	float mFps;	//fps
	static const int N = 60;	//平均を取るサンプル数
	static const int FPS = 60;	//設定したFPS
public:
	Fps(){
		mStartTime = 0;
		mCount = 0;
		mFps = 0;
	}
	bool Update(){
		if( mCount == 0 ){	//1フレーム目なら時刻を記憶
			mStartTime = GetNowCount();
		}
		if( mCount == N ){	//60フレーム目なら平均を計算する
			int t = GetNowCount();
			mFps = 1000.f/((t-mStartTime)/(float)N);
			mCount = 0;
			mStartTime = t;
		}
		mCount++;
		return true;
	}
	void Draw(){
		DrawFormatString(0,0,GetColor(255,205,255),"%.1f",mFps);
	}
	void Wait(){
		int tookTime = GetNowCount() - mStartTime;	//かかった時間
		int waitTime = mCount*1000/FPS - tookTime;	//待つべき時間
		if( waitTime > 0 ){
			Sleep(waitTime);	//待機
		}
	}
};

int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow ){

	SetMainWindowText( "タイトル" );	//タイトル

	ChangeWindowMode( TRUE );	//ウィンドウモード
	
	SetGraphMode( 800,600,32 );	//画面モードの変更
	
	if( DxLib_Init() == -1 ){	//DXライブラリ初期化
		return -1;
	}
	
	if( SetDrawScreen( DX_SCREEN_BACK ) == -1 ){	//描画を裏画面に設定
		DxLib_End();
		return -1;
	}

	Fps fps;

	while( 1 ){	//メインループ
		if( ScreenFlip() != 0 ){
			break;
		}
		if( ProcessMessage() != 0 ){
			break;
		}
		if( ClearDrawScreen() != 0 ){
			break;
		}

		fps.Update();	//更新
		fps.Draw();	//描画
		ScreenFlip();
		fps.Wait();	//待機
	}

	DxLib_End();	//DXライブラリ終了

	return 0;	//ソフトの終了
}


アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: fpsが30と表示される

#2

投稿記事 by softya(ソフト屋) » 13年前

使っているPCなどを教えて下さい。
環境次第では起こるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

琉cifer

Re: fpsが30と表示される

#3

投稿記事 by 琉cifer » 13年前

softya(ソフト屋) さんが書きました:使っているPCなどを教えて下さい。
環境次第では起こるかもしれません。
EL1850-A22C/TF

琉cifer

Re: fpsが30と表示される

#4

投稿記事 by 琉cifer » 13年前

↑上記は返信途中に誤ってenterを押してしまいましたorz

eMachines の
EL1850-A22C/TF です。

琉cifer

Re: fpsが30と表示される

#5

投稿記事 by 琉cifer » 13年前

どうやら ScreenFlip(); が二つあったのが原因みたいでした。
すみません、ありがとうございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: fpsが30と表示される

#6

投稿記事 by softya(ソフト屋) » 13年前

あっほんとですね。2つのあれば30FPSになります
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る