在书上没有找到使用DXUT中的camera类来处理简单鼠标事件的内容,在网上找到了,分享一下,只要简单几步就可以了,如果要处理复杂的鼠标响应事件,就自己写MouseProc( ... ),然后调用相应注册函数void DXUTSetCallbackMouse( ... ),下面的数处理鼠标转换视角和旋转物体等事件

有些camera类是在DXUTMisc.h中定义的,有些是在DXUTCamera.h中定义的

 

包含相应的头文件

 

定义一个全局变量保存model camera

1 CModelViewerCamera modelCamera ;

 

在OnD3D9CreateDevice函数中设置view matrix

eyePt 眼睛 位于z轴的负半轴5个单位距离处,DirectX使用左手系,z轴正向指向屏幕内部。

lookAt 视点 位于坐标原点

通过这个设置,我们相当于在z轴负半轴5个单位距离处朝坐标原点看

至于向上向量,camera类会为我们设置,一般是 D3DXVECTOR3 up(0.0f, 1.0f, 0.0f)

1 D3DXVECTOR3 eyePt(0.0f0.0f-5.0f);
2 D3DXVECTOR3 lookAt(0.0f0.0f0.0f);
3 modelCamera.SetViewParams(&eyePt, &lookAt) ;

 

在OnD3D9ResetDevice函数中设置投影矩阵

Height );

 

在OnFrameMove函数中调用camera的FrameMove函数

1 modelCamera.FrameMove(fElapsedTime);

 

在MsgProc函数中调用camera的消息处理函数,这使得model camera可以处理鼠标消息

1 modelCamera.HandleMessages(hWnd, uMsg, wParam, lParam) ;

 

最后,也是最重要的,是OnD3D9FrameRender函数中的代码

在每一帧开始绘制之前,我们要取得当前的矩阵并应用到当前的Scene中

 

相关文章:

  • 2021-05-20
  • 2022-02-11
  • 2022-12-23
  • 2021-11-23
  • 2021-04-08
  • 2021-10-17
  • 2022-03-03
  • 2021-10-08
猜你喜欢
  • 2022-01-03
  • 2022-12-23
  • 2021-11-10
  • 2021-11-11
  • 2022-12-23
  • 2022-02-01
相关资源
相似解决方案