Отображение FPS в заголовке окна GLFW?

Я пытаюсь получить мой FPS для отображения в заголовке окна, но моя программа просто не имеет этого.

мой код FPS

void showFPS()
{
 // Measure speed
 ****** currentTime = glfwGetTime();
 nbFrames++;
 if ( currentTime - lastTime >= 1.0 ){ // If last cout was more than 1 sec ago
 cout << 1000.0/******(nbFrames) << endl;
 nbFrames = 0;
 lastTime += 1.0;
 }
}

и я хочу, чтобы он тоже пошел сразу после версии здесь

window = glfwCreateWindow(640, 480, GAME_NAME " " VERSION " ", NULL, NULL);

но я не могу просто вызвать void ii, чтобы преобразовать его тоже char? или что?

3 ответа

Всегда istringstream трюк:

template< typename T >
std::string ToString( const T& val )
{
 std::istringstream iss;
 iss << val;
 return iss.str();
}

Или boost.lexical_cast.

Вы можете использовать std::string::c_str() чтобы получить строку с glfwSetWindowTitle() чтобы перейти к glfwSetWindowTitle().


Вы считали что-то вроде этого?

void
setWindowFPS (GLFWwindow* win)
{
 // Measure speed
 ****** currentTime = glfwGetTime ();
 nbFrames++;

 if ( currentTime - lastTime >= 1.0 ){ // If last cout was more than 1 sec ago
 char title [256];
 title [255] = '\0';

 snprintf ( title, 255,
 "%s %s - [FPS: %3.2f]",
 GAME_NAME, VERSION, 1000.0f / (float)nbFrames );

 glfwSetWindowTitle (win, title);

 nbFrames = 0;
 lastTime += 1.0;
 }
}


void showFPS(GLFWwindow *pWindow)
{
 // Measure speed
 ****** currentTime = glfwGetTime();
 ****** delta = currentTime - lastTime;
 nbFrames++;
 if ( delta >= 1.0 ){ // If last cout was more than 1 sec ago
 cout << 1000.0/******(nbFrames) << endl;

 ****** fps = ******(nbFrames) / delta;

 std::stringstream ss;
 ss << GAME_NAME << " " << VERSION << " [" << fps << " FPS]";

 glfwSetWindowTitle(pWindow, ss.str().c_str());

 nbFrames = 0;
 lastTime = currentTime;
 }
}

Только примечание, cout << 1000.0/******(nbFrames) << endl; не даст вам "кадров в секунду" (FPS), но даст вам "миллисекунды за кадры" , а скорее всего 16.666, если вы находитесь на скорости 60 кадров в секунду.

licensed under cc by-sa 3.0 with attribution.