VulkanEngine 0.1
Graphics engine using Vulkan
Loading...
Searching...
No Matches
Camera.h
1// Copyright (c) 2024 Michael Carlie. All Rights Reserved.
2//
3// This software is released under the MIT License.
4// https://opensource.org/licenses/MIT
5
6#ifndef INCLUDE_VULKANENGINE_CAMERA_H_
7#define INCLUDE_VULKANENGINE_CAMERA_H_
8
9#include <VulkanEngine/SceneObject.h>
10
11#include <Eigen/Eigen>
12#include <vulkan/vulkan.hpp>
13
14namespace VulkanEngine {
15
19class Camera : public SceneObject {
20 public:
28 Camera(Eigen::Vector3f _look_at = {0.0f, 0.0f, 0.0f},
29 Eigen::Vector3f _up_vector = {0.0f, 1.0f, 0.0f}, float _z_near = 0.1f,
30 float _z_far = 1000.0f, float _fov = 45.0f, uint32_t _width = 800,
31 uint32_t _height = 600);
32
34 virtual ~Camera();
35
38 void setLookAt(const Eigen::Vector3f& _look_at);
39
41 const Eigen::Vector3f getLookAt() const;
42
44 const Eigen::Vector3f getUpVector() const;
45
47 const Eigen::Matrix4f getPerspectiveProjectionMatrix() const;
48
51 const Eigen::Matrix4f getViewMatrix() const;
52
55 void setWidth(uint32_t _width);
56
59 void setHeight(uint32_t _height);
60
62 float getWidth() const;
63
65 float getHeight() const;
66
67 private:
71 void update(std::shared_ptr<SceneState> scene_state) override;
72
74 Eigen::Vector3f look_at;
75
77 Eigen::Vector3f up_vector;
78
80 float z_near;
81
83 float z_far;
84
86 float fov;
87
89 uint32_t width;
90
92 uint32_t height;
93};
94
95} // namespace VulkanEngine
96
97#endif // INCLUDE_VULKANENGINE_CAMERA_H_
Definition: Camera.h:19
const Eigen::Vector3f getUpVector() const
Definition: Camera.cpp:64
float getWidth() const
Definition: Camera.cpp:121
void setHeight(uint32_t _height)
Definition: Camera.cpp:119
void setWidth(uint32_t _width)
Definition: Camera.cpp:117
const Eigen::Vector3f getLookAt() const
Definition: Camera.cpp:60
virtual ~Camera()
Destructor.
Definition: Camera.cpp:40
float getHeight() const
Definition: Camera.cpp:123
const Eigen::Matrix4f getPerspectiveProjectionMatrix() const
Definition: Camera.cpp:68
void setLookAt(const Eigen::Vector3f &_look_at)
Definition: Camera.cpp:56
const Eigen::Matrix4f getViewMatrix() const
Definition: Camera.cpp:93
Represents an object in a scene.
Definition: SceneObject.h:17
TODO development of this class is in progress.
Definition: Attribute.h:13