X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frender%2Fcamera.h;h=0dd599298b3baed315f6d647cd932150feaa2511;hp=b10ccb93e200ceaadbe62e8498c7cb69e427409a;hb=38712d8ecc57d043a2419ffbaeeb57f7a6586f14;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266 diff --git a/source/render/camera.h b/source/render/camera.h index b10ccb93..0dd59929 100644 --- a/source/render/camera.h +++ b/source/render/camera.h @@ -3,6 +3,7 @@ #include #include "placeable.h" +#include "programdata.h" namespace Msp { namespace GL { @@ -27,20 +28,21 @@ public: }; private: - Geometry::Angle fov; - float height; - float aspect; + Geometry::Angle fov = Geometry::Angle::from_turns(0.125f); + float height = 0.0f; + float aspect = 4.0f/3.0f; // Some compilers have "near" and "far" keywords - float clip_near; - float clip_far; - float frustum_x; - float frustum_y; + float clip_near = 0.1f; + float clip_far = 10.0f; + float frustum_x = 0.0f; + float frustum_y = 0.0f; Geometry::Angle rotate; - Vector3 position; - Vector3 look_dir; - Vector3 up_dir; + Vector3 position = { 0.0f, 0.0f, 0.0f }; + Vector3 look_dir = { 0.0f, 0.0f, -1.0f }; + Vector3 up_dir = { 0.0f, 1.0f, 0.0f }; Matrix view_matrix; Matrix proj_matrix; + ProgramData shdata; public: Camera(); @@ -89,9 +91,14 @@ public: Vector4 unproject(const Vector4 &) const; Vector3 unproject(const Vector3 &) const; + const ProgramData &get_shader_data() const { return shdata; } + private: void update_projection_matrix(); void update_object_matrix(); + +public: + void set_debug_name(const std::string &); }; } // namespace GL