SGCT master (487fac4)
Simple Graphics Cluster Toolkit
Loading...
Searching...
No Matches
baseviewport.h
Go to the documentation of this file.
1/*****************************************************************************************
2 * SGCT *
3 * Simple Graphics Cluster Toolkit *
4 * *
5 * Copyright (c) 2012-2026 *
6 * For conditions of distribution and use, see copyright notice in LICENSE.md *
7 ****************************************************************************************/
8
9#ifndef __SGCT__BASEVIEWPORT__H__
10#define __SGCT__BASEVIEWPORT__H__
11
12#include <sgct/sgctexports.h>
13
14#include <sgct/definitions.h>
15#include <sgct/math.h>
16#include <sgct/projection.h>
18
19namespace sgct {
20
21class User;
22class Window;
23
27class SGCT_EXPORT BaseViewport {
28public:
30 virtual ~BaseViewport();
31
32 void setupViewport(FrustumMode frustum) const;
33
34 const Projection& projection(FrustumMode frustumMode) const;
36
37 virtual void calculateFrustum(FrustumMode mode, float nearClip, float farClip);
38
42 void calculateNonLinearFrustum(FrustumMode mode, float nearClip, float farClip);
43 void setViewPlaneCoordsUsingFOVs(float up, float down, float left, float right,
44 quat rot, float dist = 10.f);
45 void updateFovToMatchAspectRatio(float oldRatio, float newRatio);
46
47 void setEnabled(bool state);
48 bool isEnabled() const;
49
51 const vec2& position() const;
52
54 const vec2& size() const;
55
57 User& user() const;
58
60
61 void setHorizontalFieldOfView(float hFov);
63
64 const Window& window() const;
65
66protected:
68
72
74
75 bool _isEnabled = true;
77
78 vec2 _position = vec2{ 0.f, 0.f };
79 vec2 _size = vec2{ 1.f, 1.f };
80
82
83 struct {
84 vec3 lowerLeft = vec3{ 0.f, 0.f, 0.f };
85 vec3 upperLeft = vec3{ 0.f, 0.f, 0.f };
86 vec3 upperRight = vec3{ 0.f, 0.f, 0.f };
87 } _viewPlane;
88 quat _rotation = quat{ 0.f, 0.f, 0.f, 1.f };
89};
90
91} // namespace sgct
92
93#endif // __SGCT__BASEVIEWPORT__H__
void setSize(vec2 size)
ProjectionPlane _projPlane
Definition baseviewport.h:73
const vec2 & position() const
bool _isEnabled
Definition baseviewport.h:75
BaseViewport(const Window &parent, FrustumMode eye=FrustumMode::Mono)
Projection _monoProj
Definition baseviewport.h:69
const Window & _parent
Definition baseviewport.h:67
void setupViewport(FrustumMode frustum) const
void setPosition(vec2 position)
virtual ~BaseViewport()
FrustumMode eye() const
vec2 _size
Definition baseviewport.h:79
void updateFovToMatchAspectRatio(float oldRatio, float newRatio)
const vec2 & size() const
void setHorizontalFieldOfView(float hFov)
const FrustumMode _eye
Definition baseviewport.h:76
virtual void calculateFrustum(FrustumMode mode, float nearClip, float farClip)
Projection _stereoLeftProj
Definition baseviewport.h:70
void setEnabled(bool state)
quat _rotation
Definition baseviewport.h:88
float horizontalFieldOfViewDegrees() const
void calculateNonLinearFrustum(FrustumMode mode, float nearClip, float farClip)
Make projection symmetric relative to user.
vec2 _position
Definition baseviewport.h:78
const Projection & projection(FrustumMode frustumMode) const
ProjectionPlane & projectionPlane()
User * _user
Definition baseviewport.h:81
const Window & window() const
void setUser(User &user)
bool isEnabled() const
Projection _stereoRightProj
Definition baseviewport.h:71
User & user() const
void setViewPlaneCoordsUsingFOVs(float up, float down, float left, float right, quat rot, float dist=10.f)
This class holds and manages 3D projections.
Definition projection.h:23
This class holds and manages the 3D projection plane.
Definition projectionplane.h:21
Helper class for setting user variables.
Definition user.h:24
Definition window.h:46
Definition actions.h:16
FrustumMode
Definition definitions.h:23
@ Mono
Definition definitions.h:24
Definition math.h:77
Definition math.h:47
Definition math.h:56