void MsgLoop(){ MSG msg = { 0 }; int done = 0; DWORD lastTime = GetTickCount(); while (!done) { int gotMsg = (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0); DWORD curTime = GetTickCount(); float deltaTime = (float)(curTime - lastTime) / 1000.0f; lastTime = curTime; if (gotMsg) { if (msg.message == WM_QUIT) { done = 1; AppFree(); } else { TranslateMessage(&msg); DispatchMessage(&msg); } } else { AppUpdate(); AppRender(); } } }
void CallAppRender( bool bInvalidRect ) { static DWORD lastTime = 0; static POINT lastMousePos = {0xFFFF, 0xFFFF}; // Sample time and mouse position and tell the app to render. DWORD curTime = GetTickCount(); float frametime = (curTime - lastTime) / 1000.0f; if( frametime > 0.1f ) frametime = 0.1f; lastTime = curTime; // Get the cursor delta. POINT curMousePos; GetCursorPos(&curMousePos); int deltaX, deltaY; if( lastMousePos.x == 0xFFFF ) { deltaX = deltaY = 0; } else { deltaX = curMousePos.x - lastMousePos.x; deltaY = curMousePos.y - lastMousePos.y; } // Recenter the cursor. if( g_nCapture ) { lastMousePos = GetWindowCenter(); SetCursorPos( lastMousePos.x, lastMousePos.y ); } else { lastMousePos = curMousePos; } AppRender( frametime, (float)deltaX, (float)deltaY, bInvalidRect ); }
JNIEXPORT void JNICALL Java_com_rtsoft_rt3dapp_AppRenderer_nativeRender( JNIEnv* env ) { AppRender(env); }
JNIEXPORT void JNICALL Java_${PACKAGE_NAME_WITH_UNDERSCORES}_AppRenderer_nativeRender( JNIEnv* env ) { AppRender(env); }