while (!m_bQuit) {
// get all messages before rendering a frame
if (PeekMessage(&m_Message, NULL, 0, 0, PM_REMOVE)) {
if (WM_QUIT == m_Message.message) {
m_bQuit = true;
}
else {
TranslateMessage(&m_Message);
DispatchMessage(&m_Message);
}
}
else {
//do something in this frame
frame();
}
}
and the frame function
void GameOGL::frame() {
//update game time
m_dTimeGame += getDeltaTime();
//physics frame rate (1000 Hz)
if ((m_dTimeGame - m_dTimeLastPhysics) >= 0.001 ) {
//Handle keyboard commands
handleKeyboard();
countFpsPhysics();
m_dTimeLastPhysics += m_dPhysicStep;
if( (m_dTimeGame - m_dTimeLastPhysics) > 0.5) {
//prevent large jumps
m_dTimeLastPhysics = m_dTimeGame;
}
}
//render only at desired frame rate 60 Hz
if ((m_dTimeGame - m_dTimeLastRender) >= 0.016 ) {
//set background color
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
//clear screen
if (m_bZBuffer) {
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
}
else {
glClear( GL_COLOR_BUFFER_BIT );
}
//3D perspective
setProjMatrix();
m_pScene->render();
countFpsRender();
m_dTimeLastRender = m_dTimeGame;
}
return;
} //frame
When my program hiccups I see that my graphics rendering frame rate drops slightly.
Can anyone explain what is going on? How can I update my game loop so that I don't see any hickups in smooth motion across the screen?












