dl
dl_camera.h
浏览该文件的文档.
1
13#pragma once
14
15#include "dl_type.h"
16#include "math/dl_matrix.h"
17
18namespace dl
19{
21class Camera
22{
23 friend class VK;
24public:
26 _position{ 1.0f, 1.0f, 1.0f }
27 {
28 _lookDirection = { -1.0f, -1.0f, -1.0f };
29 _upDirection = AXIS_UP;
30 Math::Normalize(_lookDirection);
31
32 _leftDirection = Math::CrossProduct(AXIS_Z, _lookDirection);
33 }
35
36 Position3 GetPosition() { return _position; }
37
40 {
41 return Mat::CreateLookTo(_position, _lookDirection, _upDirection);
42 }
43private:
44 Position3 _position;
45 Position3 _lookDirection; // x
46 Position3 _upDirection; // z
47 Position3 _leftDirection; // y
48};
49
50}
Matrix4 GetMatrixView()
返回视图矩阵
friend class VK
void RunControllerFPS()
Position3 GetPosition()
矩阵(列存储)
通用类型
Matrix4 CreateLookTo(const Position3 &eye, const Position3 &dir, const Position3 &up)
创建LookTo矩阵
constexpr Float CrossProduct(const Position2 &a, const Position2 &b)
叉乘(四指指向a,弯向b,大拇指指向c)
void Normalize(Array< T, N > &v)
向量单位化
constexpr Position3 AXIS_Z
Matrix< Float, 4, 4 > Matrix4
Array< Float, 3 > Position3
constexpr Position3 AXIS_UP