提示コードのwait();関数部ですがこれはしっかり60フレームで制御されているのでしょうか? デバッグログを出力してみましたがわかりません。また間違っている場合どうなっているのか教えていただけますでしょうか? またこの場合のデバッグ方法が知りたいです。
cpp
1#include "../Header/Fps.hpp" 2 3int Fps::mCount = 0; 4 5 6Fps::Fps() { 7 glfwSetTime(0.0); 8 9 mStartTime = 0; 10 mFps = 0; 11 } 12 13void Fps::Update() { 14 15 if (mCount == 0) { //1フレーム目なら時刻を記憶 16 mStartTime = GetTime(); 17 } 18 if (mCount == N) { //60フレーム目なら平均を計算する 19 // printf("60FPS !\n"); 20 int t = GetTime(); 21 mFps = 1000.f / ((t - mStartTime) / (float)N); 22 23 mCount = 0; 24 mStartTime = t; 25 } 26 mCount++; 27} 28 29 30 31void Fps::Wait() { 32 33 float tookTime = GetTime() - mStartTime; //かかった時間 34// printf("tookTime: %f\n", tookTime); 35// printf("(mCount * 1000.0f / FPS): %f\n", (mCount * 1000.0f / FPS)); 36 float waitTime = (mCount * 1000.0f / FPS) - tookTime; //待つべき時間 37 38 39 40 float f = waitTime * 1000; 41 std::chrono::milliseconds dura((int)f); 42 43 44 45 glfwSetTime(0.0); 46} 47 48int Fps::getFrameRate() 49{ 50 return mCount; 51} 52 53 54 55float Fps::GetTime() 56{ 57 return (float)glfwGetTime() * 1000.0f; 58 // return (float)glfwGetTime(); 59} 60
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。