Nebula
Loading...
Searching...
No Matches
cameracontext.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
11//------------------------------------------------------------------------------
13#include "camerasettings.h"
14#include "math/scalar.h"
15namespace Graphics
16{
17
19{
21public:
22
26 virtual ~CameraContext();
27
29 static void Create();
30
32 static void UpdateCameras(const Graphics::FrameContext& ctx);
33
35 static void SetupProjectionFov(const Graphics::GraphicsEntityId id, float aspect, float fov, float znear, float zfar);
37 static void SetupOrthographic(const Graphics::GraphicsEntityId id, float width, float height, float znear, float zfar);
38
40 static void SetView(const Graphics::GraphicsEntityId id, const Math::mat4& mat);
42 static const Math::mat4& GetView(const Graphics::GraphicsEntityId id);
45
52
54 static void OnWindowResized(const CoreGraphics::WindowId windowId, SizeT width, SizeT height);
55
59 static void SetLODCamera(const Graphics::GraphicsEntityId id);
60
61private:
62
63 enum
64 {
69 };
70 typedef Ids::IdAllocator<
72 Math::mat4, // projection
73 Math::mat4, // view-transform
74 Math::mat4 // view-projection
77
79
83 static void Dealloc(const Graphics::ContextEntityId id);
84};
85
86//------------------------------------------------------------------------------
94
95//------------------------------------------------------------------------------
98inline void
103
104} // namespace Graphics
Handles cameras.
Definition cameracontext.h:19
virtual ~CameraContext()
destructor
Definition cameracontext.cc:27
static void UpdateCameras(const Graphics::FrameContext &ctx)
runs before frame is updated
Definition cameracontext.cc:48
static const Math::mat4 GetTransform(const Graphics::GraphicsEntityId id)
get transform
Definition cameracontext.cc:109
static void Create()
create context
Definition cameracontext.cc:36
static const Math::mat4 & GetView(const Graphics::GraphicsEntityId id)
get view
Definition cameracontext.cc:99
static const CameraSettings & GetSettings(const Graphics::GraphicsEntityId id)
get settings
Definition cameracontext.cc:139
CameraContext()
constructor
Definition cameracontext.cc:19
static void SetView(const Graphics::GraphicsEntityId id, const Math::mat4 &mat)
set view
Definition cameracontext.cc:89
static Graphics::GraphicsEntityId lodCamera
Definition cameracontext.h:78
static const Math::mat4 & GetViewProjection(const Graphics::GraphicsEntityId id)
get view-projection
Definition cameracontext.cc:129
static void SetupProjectionFov(const Graphics::GraphicsEntityId id, float aspect, float fov, float znear, float zfar)
setup as projection and fov
Definition cameracontext.cc:65
static void SetLODCamera(const Graphics::GraphicsEntityId id)
set the LOD camera
Definition cameracontext.cc:176
static Graphics::GraphicsEntityId GetLODCamera()
get the LOD camera
Definition cameracontext.cc:167
static void SetupOrthographic(const Graphics::GraphicsEntityId id, float width, float height, float znear, float zfar)
setup as ortographic
Definition cameracontext.cc:77
@ Camera_Projection
Definition cameracontext.h:66
@ Camera_Settings
Definition cameracontext.h:65
@ Camera_View
Definition cameracontext.h:67
@ Camera_ViewProjection
Definition cameracontext.h:68
static const Math::mat4 & GetProjection(const Graphics::GraphicsEntityId id)
get projection
Definition cameracontext.cc:119
static void OnWindowResized(const CoreGraphics::WindowId windowId, SizeT width, SizeT height)
called if the window size has changed
Definition cameracontext.cc:149
Ids::IdAllocator< Graphics::CameraSettings, Math::mat4, Math::mat4, Math::mat4 > CameraAllocator
Definition cameracontext.h:75
static CameraAllocator cameraAllocator
Definition cameracontext.h:76
static void Dealloc(const Graphics::ContextEntityId id)
deallocate a slice
Definition cameracontext.h:99
static Graphics::ContextEntityId Alloc()
allocate a new slice for this context
Definition cameracontext.h:90
Definition camerasettings.h:20
Definition graphicscontext.h:165
An ID allocator associates an id with a slice in an N number of arrays.
Definition idallocator.h:40
Ids::Id32 Alloc()
Allocate an object.
Definition idallocator.h:46
void Dealloc(Ids::Id32 id)
Deallocate an object. Just places it in freeids array for recycling.
Definition idallocator.h:60
Implements the shader server used by Vulkan.
Definition cameramanager.h:21
Nebula's scalar datatype.
Definition window.h:25
Definition graphicscontext.h:133
Definition graphicsserver.h:31
The graphics entity is only an Id, to which we can attach GraphicsContexts.
Definition graphicsentity.h:16
A 4x4 single point precision float matrix.
Definition mat4.h:47
int SizeT
Definition types.h:49