Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2013, 08:51
ShotoReaper
 
Fecha de Ingreso: septiembre-2012
Mensajes: 38
Antigüedad: 12 años, 2 meses
Puntos: 0
Caso extraño variable Int

Buenas!
Tengo una variable int llamada FrameCount la cual, muestra un valor incorrecto al menos que haga std::cout<<FrameCount<<std::endl antes del if ((currentTime - t0Value) > theTimeInterval).

Código:

Código:
void Engine::calcFPS(double theTimeInterval)
{
	static double fps  = 0.0;          // Set the initial FPS value to 0.0
	// Get the current time in seconds since the program started (non-static, so executed every time)
	double currentTime = glfwGetTime();

	// Ensure the time interval between FPS checks is sane (low cap = 0.1s, high-cap = 10.0s)
	// Negative numbers are invalid, 10 fps checks per second at most, 1 every 10 secs at least.
	if (theTimeInterval < 0.1)
	{
		theTimeInterval = 0.1;
	}
	if (theTimeInterval > 10.0)
	{
		theTimeInterval = 10.0;
	}
    std::cout<<FrameCount<<std::endl; // Si no hago esto, la variable toma valores incorrectos
	// Calculate and display the FPS every specified time interval
	if ((currentTime - t0Value) > theTimeInterval)
	{
		// Calculate the FPS as the number of frames divided by the interval in seconds
		fps = FrameCount/(currentTime - t0Value);
        // Convert the fps value into a string using an output stringstream
        std::ostringstream stream;
        stream << fps;
        std::string fpsString = stream.str();

        // Append the FPS value to the window title details
        theWindowTitle = " | FPS: " + fpsString;

        // Convert the new window title to a c_str and set it
        const char* pszConstString = theWindowTitle.c_str();
        glfwSetWindowTitle(pszConstString);

		// Reset the FPS frame counter and set the initial time to be now
		FrameCount = 0;
		t0Value = glfwGetTime();
	}
	else // FPS calculation time interval hasn't elapsed yet? Simply increment the FPS frame counter
	{
		FrameCount++;
	}
}