globjects  1.0.0.000000000000
Strict OpenGL objects wrapper.
ProgramPipeline.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <set>
5
6#include <glbinding/gl/types.h>
7
8#include <globjects/globjects_api.h>
9
12#include <globjects/Object.h>
13
14
15namespace globjects
16{
17
18
19class Program;
20
21class GLOBJECTS_API ProgramPipeline : public Object, protected ChangeListener
22{
23public:
26
27 virtual void accept(ObjectVisitor & visitor) override;
28
29 void use() const;
30 static void release();
31
32 void useStages(Program * program, gl::UseProgramStageMask stages);
33 void releaseStages(gl::UseProgramStageMask stages);
34 void releaseProgram(Program * program);
35
36 bool isValid() const;
37 void validate() const;
38
39 bool checkUseStatus() const;
40
41 std::string infoLog() const;
42 gl::GLint get(gl::GLenum pname) const;
43
44 virtual void notifyChanged(const Changeable * sender) override;
45
46 virtual gl::GLenum objectType() const override;
47
48protected:
49 void invalidate();
50
51protected:
52 bool m_dirty;
53 std::set<ref_ptr<Program>> m_programs;
54};
55
56
57} // namespace globjects
Allows listening to any Changeable.
Definition: ChangeListener.h:23
Superclass of all objects that want others to signal that they have changed.
Definition: Changeable.h:23
Superclass of all wrapped OpenGL objects.
Definition: Object.h:27
Implements a Visitor Pattern to iterate over all tracked globjects objects.
Definition: ObjectVisitor.h:30
Wraps an OpenGL program.
Definition: Program.h:79
Definition: ProgramPipeline.h:22
virtual void accept(ObjectVisitor &visitor) override
bool m_dirty
Definition: ProgramPipeline.h:52
std::set< ref_ptr< Program > > m_programs
Definition: ProgramPipeline.h:53
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)
virtual void notifyChanged(const Changeable *sender) override
std::string infoLog() const
void releaseProgram(Program *program)
Contains all the classes that wrap OpenGL functionality.