globjects  2.0.0.4363356ae2ef
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
ProgramPipeline.h
Go to the documentation of this file.
1
2#pragma once
3
4
5#include <set>
6
7#include <glbinding/gl/types.h>
8
9#include <globjects/globjects_api.h>
10
11#include <globjects/Object.h>
13
14
15namespace globjects
16{
17
18
19class Program;
20
21
22class GLOBJECTS_API ProgramPipeline : public Object, public Instantiator<ProgramPipeline>
23{
24public:
27
28 void use() const;
29 static void release();
30
31 void useStages(Program * program, gl::UseProgramStageMask stages);
32 void releaseStages(gl::UseProgramStageMask stages);
33 void releaseProgram(Program * program);
34
35 bool isValid() const;
36 void validate() const;
37
38 bool checkUseStatus() const;
39
40 std::string infoLog() const;
41 gl::GLint get(gl::GLenum pname) const;
42
43 virtual void notifyChanged(const Program * sender);
44
45 virtual gl::GLenum objectType() const override;
46
47 void addSubject(Program * subject);
48 virtual void removeSubject(Program * subject);
49
50
51protected:
52 void invalidate();
53
54
55protected:
56 std::set<Program *> m_programSubjects;
57 bool m_dirty;
58 std::set<Program *> m_programs;
59};
60
61
62} // namespace globjects
CRTP for creating objects similar to std::make_unique.
Definition: Instantiator.h:22
Superclass of all wrapped OpenGL objects.
Definition: Object.h:28
Wraps an OpenGL program.
Definition: Program.h:82
Definition: ProgramPipeline.h:23
bool m_dirty
Definition: ProgramPipeline.h:57
virtual void notifyChanged(const Program *sender)
gl::GLint get(gl::GLenum pname) const
virtual gl::GLenum objectType() const override
void releaseStages(gl::UseProgramStageMask stages)
void useStages(Program *program, gl::UseProgramStageMask stages)
std::set< Program * > m_programSubjects
Definition: ProgramPipeline.h:56
std::set< Program * > m_programs
Definition: ProgramPipeline.h:58
void addSubject(Program *subject)
std::string infoLog() const
void releaseProgram(Program *program)
virtual void removeSubject(Program *subject)
Contains all the classes that wrap OpenGL functionality.