Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_graphics
Rendering
GlSystem.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "../OpenGL/RenderTarget.hpp"
4
#include <
ivorium_core/ivorium_core.hpp
>
5
#include <map>
6
7
namespace
iv
8
{
9
10
class
Game;
11
14
class
GlInfo
15
{
16
public
:
17
GlInfo
(
Instance
* inst );
18
Instance
*
instance
()
const
;
19
20
bool
GlIsEnabled
()
const
;
21
RenderTarget
*
render_target
()
const
;
22
23
private
:
24
Instance
* inst;
25
};
26
29
class
GlListener
:
public
GlInfo
30
{
31
public
:
32
GlListener
(
Instance
* inst );
33
~GlListener
();
34
35
virtual
void
GlEnable
() = 0;
36
virtual
void
GlDisable
() = 0;
37
virtual
void
GlDrop
() = 0;
38
};
39
42
class
GlSystem
:
public
System
43
{
44
public
:
47
GlSystem
(
SystemContainer
* sc,
RenderTarget
* rt,
bool
gl_enabled );
48
~GlSystem
();
49
50
void
gl_enable
();
51
void
gl_disable
();
52
void
gl_drop
();
54
57
59
virtual
std::string
debug_name
()
const override
{
return
"GlSystem"
; }
61
64
69
void
AddGlListener
(
GlListener
* listener );
70
void
RemoveGlListener
(
GlListener
* listener );
71
bool
GlIsEnabled
()
const
;
72
75
RenderTarget
*
render_target
()
const
;
76
78
79
private
:
80
void
ApplyTargetGlEnabled();
81
void
ListenersEnableGl(
bool
enable );
82
83
private
:
84
// target
85
RenderTarget
* _render_target;
86
87
// listeners
88
bool
gl_listeners_iterating;
89
std::unordered_set< GlListener * > gl_listeners;
90
91
// state
92
bool
gl_enabled;
93
};
94
95
}