龍神録プログラミング2のFPS計測について

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 龍神録プログラミング2のFPS計測について

Re: 龍神録プログラミング2のFPS計測について

#9

by 夢幻ノ月夜 » 4年前

>>あたっしゅさん
やはり1回余計に待ってたんですね…ありがとうございます

>>ISLeさん
盲点でした
直しておきます

Re: 龍神録プログラミング2のFPS計測について

#8

by ISLe » 4年前

SetDrawScreen(DX_SCREEN_BACK);
をDxLib_Init関数を呼び出した後に移動すれば良いのではないかと思います。

Re: 龍神録プログラミング2のFPS計測について

#7

by あたっしゅ » 4年前

https://detail.chiebukuro.yahoo.co.jp/q ... 1156444201
DXライブラリについて、ScreenFlip()関数の動...-Yahoo 知恵袋(ja)

>あと、ScreenFlip()はデフォルトで垂直同期(液晶なら一般的に1/60秒周期)を待つ設定です。
>なので、ScreenFlipのタイミングは1/60秒の倍数となります。
>もし、ScreenFlip()自体に問題があるなら、切り替えはSetWaitVSyncFlag(FALSE);で出来ます。

Re: 龍神録プログラミング2のFPS計測について

#6

by 夢幻ノ月夜 » 4年前

fps.waitとfps.drawをメインループの先頭に持ってきてScreenFlipをProcessMessageより先に処理することで解決となりました…
ただ何が起こっていたのかはよく分からないので詳細が分かる方いらっしゃいましたら教えて欲しいです…

Re: 龍神録プログラミング2のFPS計測について

#5

by 夢幻ノ月夜 » 4年前

ScreenFlipとProcessMessageの順番を入れ替えたらかなりマシになりましたがまだFps.drawが時々飛んでますね…

Re: 龍神録プログラミング2のFPS計測について

#4

by 夢幻ノ月夜 » 4年前

様々な位置でブレークをかけたり表示方法を変えてみたりしたところやはりFps.drawの中でだけ起こっているようです
なぜ描画が反映されない、またはスキップされているのでしょうか
実行されていないケースは絶対に無いはずなのですが…

Re: 龍神録プログラミング2のFPS計測について

#3

by 夢幻ノ月夜 » 4年前

よく見たらFPS表示が点滅していることに気づきましたがなぜこうなっているのかが解明できません。
ブレークをかけてもfpsが0になってスキップされていることは無さそうです

Re: 龍神録プログラミング2のFPS計測について

#2

by 夢幻ノ月夜 » 4年前

一応垂直同期を待たなければFPS60が出ることが確認できましたが、これによってどのような問題が起きるのか知っておきたいです。引き続きご教授いただけないでしょうか。

龍神録プログラミング2のFPS計測について

#1

by 夢幻ノ月夜 » 4年前

龍神録プログラミングの館2に載っているFPS計測のサンプルコードをコピペして自作ゲーム(VC++2019、DXライブラリ)のFPSを計測してみたのですが、なぜかFPSが43.7ほどしか出ていません。
本体の処理が重い可能性を考慮してメインループをごっそりコメントアウトしても43.7のままでした。
次にFPS固定値の設定を30に変更しても43.7と出てしまいます。
何がおかしいのでしょうか。

コードは一部隠しますがだいたいこんな感じです。
何から解明していけばいいのか見当も付きません。
この場合何を疑うべきでしょうか、ご教授よろしくお願いします。

コード:

#include <DxLib.h>
#include "Fps.h"
//その他使ったヘッダ

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) {
	SetWindowText("ゲームタイトル");
	ChangeWindowMode(TRUE);
	SetDrawScreen(DX_SCREEN_BACK);
	if (DxLib_Init() == -1)return -1;
	//SetDrawMode(DX_DRAWMODE_BILINEAR);

	Fps fps;
	
	/*
	
	ごちゃごちゃと一点もののローディング
	
	*/
	while (ProcessMessage() == 0 && clsDx() != -1 && ClsDrawScreen() != -1) {
		/*
		
		ゲームのメインループ(コメントアウトテスト済み)
		
		*/
		fps.draw();
		fps.wait();
		if(ScreenFlip() == -1)break;
	}

	DxLib_End();

	return 0;
}

ページトップ