先声明相机:CFirstPersonCamera g_Camera;// Camera
然后在设备初始化函数里设置投影矩阵:
//建立并设置投影矩阵
float fAspectRatio = pBackBufferSurfaceDesc->Width / (FLOAT)pBackBufferSurfaceDesc->Height;
g_Camera.SetProjParams( D3DX_PI/4, fAspectRatio, 0.1f, 10000.0f );
pd3dDevice->SetTransform( D3DTS_PROJECTION,g_Camera.GetProjMatrix());
然后在每一帧的动作里面设置观察矩阵:
g_Camera.FrameMove( fElapsedTime );//更新相机的信息
pd3dDevice->SetTransform(D3DTS_VIEW,g_Camera.GetViewMatrix());//设置观察矩阵
然后在消息响应函数里添加相机的消息响应:
//在MsgProc函数中添加
g_Camera.HandleMessages( hWnd, uMsg, wParam, lParam );
这样就OK了,希望对大家有帮助。
需要注意的是在CFirstPersonCamera中已经有了g_pd3dDevice->Present( NULL, NULL, NULL, NULL );这个将后台提交到前台的操作,在自己写渲染函数的时候一定不要再写这个了,不然会出现模型闪动的情况.