int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) ) { MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); static float lastTime = (float)timeGetTime(); while(msg.message != WM_QUIT) { if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } else { float currTime = (float)timeGetTime(); float timeDelta = (currTime - lastTime)*0.001f; ptr_display(timeDelta); lastTime = currTime; } } return msg.wParam; }
int d3d::EnterMsgLoop( CScene *pScene, bool (*ptr_display)(int timeDelta) ) { MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); static float lastTime = (float)timeGetTime(); static int frame = 0; static int frame_time = 0; while(msg.message != WM_QUIT) { if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); pScene->MessageProc( &msg ); } else { g_CurTime = timeGetTime(); g_DeltaTime = (g_CurTime - lastTime); #if defined(_PRINT_FRAME) if( (int)g_CurTime - frame_time > 5000 ) { g_Dbg.Console( "--------------------------------------------\n" ); g_Dbg.Console( "frame: %1.1f\n", (float)(frame / 5.f) ); g_Dbg.Console( "--------------------------------------------\n" ); frame_time = g_CurTime; frame = 0; } #endif // _PRINT_FRAME if( g_DeltaTime < 10 ) { Sleep( 1 ); } else { #if defined(_PRINT_FRAME) ++frame; #endif // _PRINT_FRAME ptr_display(g_DeltaTime); lastTime = g_CurTime; } } } return msg.wParam; }
int d3d::EnterMsgLoop(bool(*ptr_display)()) { MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); while (msg.message != WM_QUIT) { if(PeekMessage(&msg, 0,0,0,PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } else { ptr_display(); } } return msg.wParam; }
int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) ) { MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); static float lastTime = (float)timeGetTime(); while(msg.message != WM_QUIT) { if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { if (msg.message == WM_KEYDOWN) { if (msg.wParam == VK_RETURN) { g_AnimationState++; if (g_AnimationState >= 20/*MAX_ANIMATIONS*/) { g_AnimationState = 0; } } } ::TranslateMessage(&msg); ::DispatchMessage(&msg); } else { float currTime = (float)timeGetTime() * 0.001f; //float timeDelta = (currTime - lastTime)*0.001f; ptr_display(currTime/*timeDelta*/); lastTime = currTime; } } return msg.wParam; }