|
|
俺是初学D3D,看到下面的消息循环时 很是不理解 请指教一下
其实就是安下上下左右时 3D物体旋转 但下面的代码能实现吗 我看了半天也看不懂
重点是循环这块 假如当我按下左键后 是进入IF这块把吧 但display函数却在ELSE里 咋回事啊
while(msg.message != WM_QUIT)
{
if(: eekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
: ispatchMessage(&msg);
}
else
{
float currTime = (float)timeGetTime();
float timeDelta = (currTime - lastTime)*0.001f;
display(timeDelta);
lastTime = currTime;
}
display是渲染等一系列主操作的函数 定义如下
static float angle = (3.0f * D3DX_PI) / 2.0f;
static float height = 5.0f;
if( ::GetAsyncKeyState(VK_LEFT) & 0x8000f )
angle -= 0.5f * timeDelta;
if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )
angle += 0.5f * timeDelta;
if( ::GetAsyncKeyState(VK_UP) & 0x8000f )
height += 5.0f * timeDelta;
if( ::GetAsyncKeyState(VK_DOWN) & 0x8000f )
height -= 5.0f * timeDelta;
...................
....................等等
我想弄明白假如当我按下左键后这个循环是怎样执行的
下面的是回调函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch( msg )
{
case WM_DESTROY:
::PostQuitMessage(0);
break;
case WM_KEYDOWN:
if( wParam == VK_ESCAPE )
::DestroyWindow(hwnd);
break;
}
return ::DefWindowProc(hwnd, msg, wParam, lParam);
}
|
|