globjects  2.0.0.630135941c42
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
State.h
Go to the documentation of this file.
1
2#pragma once
3
4
5#include <unordered_map>
6#include <vector>
7
8#include <glbinding/gl/types.h>
9
10#include <globjects/globjects_api.h>
13
14
15namespace globjects
16{
17
18
19class StateSetting;
20class Capability;
21
22
23class GLOBJECTS_API State : public AbstractState, public Instantiator<State>
24{
25public:
26 enum Mode
27 {
29 ImmediateMode
30 };
31
32
33public:
34 State(Mode = ImmediateMode);
35 State(const State &) = delete;
36
37 virtual ~State();
38
39 State & operator=(const State &) = delete;
40
41 static std::unique_ptr<State> currentState();
42
43 void setMode(Mode mode);
44 Mode mode() const;
45
46 void apply();
47
48 virtual void enable(gl::GLenum capability) override;
49 virtual void disable(gl::GLenum capability) override;
50 virtual bool isEnabled(gl::GLenum capability) const override;
51 virtual void enable(gl::GLenum capability, int index) override;
52 virtual void disable(gl::GLenum capability, int index) override;
53 virtual bool isEnabled(gl::GLenum capability, int index) const override;
54
55 virtual void add(std::unique_ptr<StateSetting> && setting) override;
56
57 Capability * capability(gl::GLenum capability);
58 const Capability * capability(gl::GLenum capability) const;
59 std::vector<Capability *> capabilities() const;
60
62 const StateSetting * setting(const StateSettingType & type) const;
63 std::vector<StateSetting *> settings();
64 std::vector<const StateSetting *> settings() const;
65
66
67protected:
68 void addCapability(std::unique_ptr<Capability> && capability);
69 Capability * getCapability(gl::GLenum capability);
70 const Capability * getCapability(gl::GLenum capability) const;
71
72
73protected:
75 std::unordered_map<gl::GLenum, std::unique_ptr<Capability>> m_capabilities;
76 std::unordered_map<StateSettingType, std::unique_ptr<StateSetting>> m_settings;
77};
78
79
80} // namespace globjects
Definition AbstractState.h:21
Definition Capability.h:19
CRTP for creating objects similar to std::make_unique.
Definition Instantiator.h:22
Definition State.h:24
Mode mode() const
std::unordered_map< gl::GLenum, std::unique_ptr< Capability > > m_capabilities
Definition State.h:75
State & operator=(const State &)=delete
Capability * capability(gl::GLenum capability)
Mode
Definition State.h:27
@ DeferredMode
Definition State.h:28
void setMode(Mode mode)
std::vector< const StateSetting * > settings() const
virtual void enable(gl::GLenum capability) override
State(const State &)=delete
std::unordered_map< StateSettingType, std::unique_ptr< StateSetting > > m_settings
Definition State.h:76
Mode m_mode
Definition State.h:74
static std::unique_ptr< State > currentState()
std::vector< Capability * > capabilities() const
const Capability * capability(gl::GLenum capability) const
State(Mode=ImmediateMode)
void addCapability(std::unique_ptr< Capability > &&capability)
virtual ~State()
Capability * getCapability(gl::GLenum capability)
virtual bool isEnabled(gl::GLenum capability) const override
virtual void disable(gl::GLenum capability, int index) override
virtual bool isEnabled(gl::GLenum capability, int index) const override
const StateSetting * setting(const StateSettingType &type) const
virtual void add(std::unique_ptr< StateSetting > &&setting) override
virtual void disable(gl::GLenum capability) override
std::vector< StateSetting * > settings()
virtual void enable(gl::GLenum capability, int index) override
StateSetting * setting(const StateSettingType &type)
const Capability * getCapability(gl::GLenum capability) const
Definition StateSetting.h:42
Definition StateSetting.h:24
Contains all the classes that wrap OpenGL functionality.