www.pudn.com > D3DITEM01.rar > D3DCamera.h
#pragma once #ifndef _D3DCAMERA_H #define _D3DCAMERA_H #include#include #include class CCamera { private: D3DXMATRIX m_ViewTransMatrix; //视图变换矩阵 D3DXMATRIX m_ProjTransMatrix; //投影变换矩阵 D3DXVECTOR3 m_Eye; //摄象机位置(点) D3DXVECTOR3 m_At; //摄象机观察点(点) D3DXVECTOR3 m_Up; //摄象机正上方(方向) D3DXVECTOR3 m_vDelta; //摄像机的平移量 float m_fFOV; //视角弧度 float m_fAspect; //观察表面长宽比 float m_fNear; //近观察表面的距离 float m_fFar; //远观察表面的距离 float m_fCameraYawAngle; //摄像机绕Y轴旋转的欧拉角 float m_fCameraPitchAngle; //摄像机绕X轴旋转的欧拉角 float m_fRotationYVelocity; //摄像机绕Y轴旋转的角位移速度 float m_fRotationXVelocity; //摄像机绕X轴旋转的角位移速度 float m_fTranslationVelocity; //摄像机的平移速度 float m_fMaxXPitch; //摄像机绕X轴旋转的俯仰角最大值 float m_fMinXPitch; //摄像机绕X轴旋转的俯仰角最小值 bool m_bIsRot; //用户是否旋转了摄像机 POINT m_LastPoint; //上次游戏循环帧中的鼠标位置 public: CCamera(); //构造 virtual ~CCamera(); //析构 void InitCamera( //初始化 D3DXVECTOR3& Eye, //摄象机位置(点) D3DXVECTOR3& At, //摄象机观察点(点) D3DXVECTOR3& Up, //摄象机正上方(方向) float FOV, //视角弧度 float Aspect, //观察表面长宽比 float Near, //近观察表面的距离 float Far, //远观察表面的距离 float RotationYVelocity, //摄像机绕Y轴旋转的角位移速度 float RotationXVelocity, //摄像机绕X轴旋转的角位移速度 float TranslationVelocity, //摄像机的平移速度 float MaxXPitch, //摄像机绕X轴旋转的俯仰角最大值 float MinXPitch); //摄像机绕X轴旋转的俯仰角最小值 void GetKeyboardInput(float); //键盘响应 void Update(); //更新矩阵 void SetMatrix(LPDIRECT3DDEVICE9 pDevice); //设置距阵 const D3DXMATRIX* GetViewTransMatrix() const; //得到当前的视图变换矩阵 const D3DXMATRIX* GetProjTransMatrix() const; //返回当前的投影变换矩阵 const D3DXVECTOR3* GetEye() const; //返回当前的摄像机位置 }; #endif