// Camera.h
#ifndef CAMERA_H_
#define CAMERA_H_
#include "Math.h"
class Camera
{
private:
Vector3 direction ; // 朝向
float aspectRatio ; // 宽高比
public:
Vector3 position ; // 位置
// 根据视距和水平视域,宽高比,来确定的近裁剪面尺寸
float nearLeft ;
float nearRight ;
float nearBottom ;
float nearTop ;
float nearDistance ;
float farDistance ;
float fov ;
float yzFov ; // yz平面视域角
float viewPortWidth ; // 视口宽度
float viewPortHeight ; // 视口高度
Matrix4X4 toClip ; // 相机空间变换到裁剪空间
Matrix4X4 toOriginInverse ; // 相机变换到局部坐标轴与世界坐标轴重合用到的矩阵
Camera(float fov, float viewPortWidth, float viewPortHeight) ;
~Camera() ;
// 更新摄像机参数
void Update(float nearDistance, float farDistance, float yzFov, float screenWidth, float screenHeight) ;
void Strafe(float unit) ; // 左右
void Fly(float unit) ; // 上下
void Walk(float unit) ; // 前后
void BuildWroldToCameraMatrix() ;
void BuildCameraToClipMatrix() ;
} ;
#endifCamera.h
最新推荐文章于 2023-08-22 14:52:08 发布
本文详细介绍了Camera类的设计与实现,包括其内部属性如方向、位置、视距、视域等,以及关键方法如更新参数、左右移动、上下移动、前后移动等。详细解释了如何根据视距和水平视域、宽高比来确定近裁剪面尺寸,并构建从相机空间到裁剪空间的变换矩阵。
4405

被折叠的 条评论
为什么被折叠?



