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