コード例 #1
0
ファイル: d3dUtility.cpp プロジェクト: Odinra/DirectX
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;
}
コード例 #2
0
ファイル: d3dUtility.cpp プロジェクト: jjuiddong/Dx3D-Study
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;
}
コード例 #3
0
ファイル: base.cpp プロジェクト: Odinra/DirectX
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;
}
コード例 #4
0
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;
}