📄 camera.h
字号:
#pragma once
#include "BaseHeader.h"
class CCamera
{
public:
enum CameraType { Land, Air }; //判断飞行物能否跳很高,使限制的因素
CameraType m_cameraType; //摄像机类型
D3DXVECTOR3 m_vEyePos; // 摄像机的当前位置
D3DXVECTOR3 m_vLookat; // 摄像机的视线位置
D3DXVECTOR3 m_vUp; // 摄像机的上方向量
D3DXVECTOR3 m_vRight; // 摄像机的侧面向量 cross(view,up)
float m_fov; //摄像机的张角
float m_width; //当前窗口的宽高
float m_height;
float m_zn;
float m_fn;
public:
CCamera(void);
CCamera(CameraType type);
~CCamera(void);
// 得到摄像机矩阵.
void GetViewMatrix(D3DXMATRIXA16* matView);
//得到投影矩阵
void GetProjectMatrix(D3DXMATRIXA16* proj,float fovy,float aspect,float zn,float zf);
// 设定创建摄像机矩阵的基本向量值.
void SetView( D3DXVECTOR3* pvEye,D3DXVECTOR3* pvLookat,D3DXVECTOR3* pvUp);
// 设定摄像机的位置值.
void SetEyePos( D3DXVECTOR3* pv ) ;
// 得到摄像机的位置值.
D3DXVECTOR3* GetEyePos();
// 设定摄像机的视线值.
void SetLookat( D3DXVECTOR3* pv ) ;
// 得到摄像机的视线值.
D3DXVECTOR3* GetLookat();
// 设定摄像机的上方向量值.
void SetUp( D3DXVECTOR3* pv ) ;
// 得到摄像机的上方向量值.
D3DXVECTOR3* GetUp() ;
//获得摄像机的类型
void setCameraType(CameraType type);
//设定摄像机的类型
CameraType getCameraType();
// 更新值.
void Flush();
// 以摄像机坐标系的X轴为轴旋转angle.
void RotateLocalX( float angle );
// 以摄像机坐标系的Y轴为轴旋转angle.
void RotateLocalY( float angle );
// 以摄像机坐标系的Z轴为轴旋转angle.
void RotateLocalZ( float angle );
// 移动到世界坐标系的 *pv值的位置.
void MoveTo( D3DXVECTOR3* pv );
// 朝着摄像机坐标系X轴方向前进dist(后退时为-dist)
void MoveLocalX( float dist );
// 朝着摄像机坐标系Y轴方向前进dist(后退时为-dist)
void MoveLocalY( float dist );
// 朝着摄像机坐标系Z轴方向前进dist(后退时为-dist)
void MoveLocalZ( float dist );
//设置2D摄像机
void Set2DCamera(LPDIRECT3DDEVICE9 device,float windowW,float windowH);
//设置3D摄像机
void Set3DCamera(LPDIRECT3DDEVICE9 device,float windowW,float windowH,float zn,float fn,float frustumFar);
//获得视线的方向
D3DXVECTOR3 GetDirection();
//测试摄像机是否能够看见
bool CameraCanSee(D3DXVECTOR3 pos,float maxLength=0);
//获得鼠标射线
D3DXVECTOR3 GetCursorRay(POINT point);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -