Add base camera
This commit is contained in:
parent
0373b7581e
commit
04e82c754c
17
src/camera.cpp
Normal file
17
src/camera.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "camera.h"
|
||||||
|
|
||||||
|
Matrix4 get_camera_view_matrix(Camera *camera, Render_Data *render_data) {
|
||||||
|
f32 azimimuth_radians = glm::radians(render_data.view_azimuth);
|
||||||
|
f32 elevation_radians = glm::radians(render_data.view_elevation);
|
||||||
|
|
||||||
|
f32 sin_azimuth = glm::sin(azimuth_radians);
|
||||||
|
f32 cos_azimuth = glm::cos(azimuth_radians);
|
||||||
|
f32 sin_elevation = glm::sin(elevation_radians);
|
||||||
|
f32 cos_elevation = glm::cos(elevation_radians);
|
||||||
|
|
||||||
|
camera->view_direction = glm::normalize(Vector3(sin_azimuth * cos_elevation, sin_elevation, -cos_azimuth * cos_elevation));
|
||||||
|
|
||||||
|
Matrix4 look_at = glm::lookAt(camera->world_position, camera->world_position + camera->view_direction, camera->word_up_vector);
|
||||||
|
|
||||||
|
return look_at;
|
||||||
|
}
|
||||||
15
src/camera.h
Normal file
15
src/camera.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "basic.h"
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
#include "renderer.h"
|
||||||
|
#include "render_data.h"
|
||||||
|
|
||||||
|
struct Camera {
|
||||||
|
Vector3 world_position = Vector3(0.5f, 0.25f, 1.0f);
|
||||||
|
Vector3 view_direction = Vector3(0.0f, 0.0f, 0.0f);
|
||||||
|
Vector3 world_up_vector = Vector3(0.0f, 1.0f, 0.0f);
|
||||||
|
};
|
||||||
|
|
||||||
|
Matrix4 get_camera_view_matrix(Camera *camera, Render_Data *render_data);
|
||||||
|
|
||||||
@ -24,4 +24,7 @@ struct Render_Data {
|
|||||||
f32 user_interface_generate_time = 0.0f;
|
f32 user_interface_generate_time = 0.0f;
|
||||||
bool use_alt_shader = false;
|
bool use_alt_shader = false;
|
||||||
s32 field_of_view = 90;
|
s32 field_of_view = 90;
|
||||||
|
|
||||||
|
f32 view_azimuth = 320.0f;
|
||||||
|
f32 view_elevation = -15.0f;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include <glm/gtc/type_ptr.hpp>
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
#include "render_data.h"
|
#include "render_data.h"
|
||||||
#include "user_interface.h"
|
#include "user_interface.h"
|
||||||
|
#include "camera.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user