添加Camera.h
#pragma once
class Camera
{
public:
Camera(const glm::vec3& pos,float fov,float aspect,float zNear,float zFar)
{
this->pos=pos;
this->forword=glm::vec3(0.0f,0.0f,1.0f);
this->up=glm::vec3(0.0f,1.0f,1.0f);
this->projection=glm::perspective(fov,aspect,zNear,zFar);
}
~Camera();
private:
glm::mat4 projection;
gm::vec3 pos;
glm::vec3 forword;
glm::vec3 up;
}
世界坐标系到照相机坐标系的转换
inline glm::mat4 GetViewProjection() const
{
glm::lookAt(pos,pos+forward,up);//第一个参数是脑袋的位置,第二个参数是看物体的方向,第三个参数是头顶的方向
}
在main.cpp中
#define WIDTH 800
#define HEIGHT 600
Camera camera(glm::vec3(0,0,-3),70.0f,(float)WIDTH/(float)HEIGHT,0.01F,1000.0f);
在shader中
void Update(const Transform& transform,const Camera& camera)
{
glm::mat4 model=camera.GetViewProjection()
}
完成照相机坐标系的转换