|

楼主 |
发表于 2007-7-31 18:12:00
|
显示全部楼层
Re:按下鼠标右键,拖动鼠标,摄象机也随着移动,代码怎么写
谢谢楼上的.
你看这个函数怎么样
void ProcessMouse()
{
DIMOUSESTATE MouseState;
if(FAILED(lpMouse->GetDeviceState(sizeof(MouseState),(LPVOID)&MouseState)))
{
return;
}
//Is the left mouse button down?
if(MOUSEBUTTONDOWN(MouseState.rgbButtons[MOUSEBUTTON_LEFT]))
{
m_nMouseLeft = 1;
}
else
{
m_nMouseLeft = 0;
}
//Is the right mouse button down?
if(MOUSEBUTTONDOWN(MouseState.rgbButtons[MOUSEBUTTON_RIGHT]))
{
m_nMouseRight = 1;
}
else
{
m_nMouseRight = 0;
}
m_nMouseX += MouseState.lX;
m_nMouseY += MouseState.lY;
}
在下面的函数中被调用
VOID SetupMatrices()
{
D3DXMatrixIdentity(&g_matWorld);
g_pd3dDevice->SetTransform( D3DTS_WORLD,&g_matWorld);
ProcessMouse();
if(m_nMouseRight == 0 )
{
g_pCamera->walk((float)m_nMouseY);
g_pCamera->yaw((float)m_nMouseX);
g_pCamera->getViewMatrix(&matView);
}
else
{
D3DXMatrixLookAtLH( &matView,&vEyePt, &vLookatPt , &vUpVec );
}
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj,D3DX_PI/4, 1.0f, 1.0f, 1000.0f);
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
但是这句if(FAILED(lpMouse->GetDeviceState(sizeof(MouseState),(LPVOID)&MouseState)))又引起访问冲突
一下子陷入困惑与迷茫当中,找不出哪里的原因.
|
|