globjects  2.0.0.4363356ae2ef
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
Uniform.h
Go to the documentation of this file.
1
2#pragma once
3
4
5#include <glbinding/gl/types.h>
6
7#include <globjects/globjects_api.h>
10
11
12namespace globjects
13{
14
15
37template<typename T>
38class GLOBJECTS_TEMPLATE_API Uniform : public AbstractUniform, public Instantiator<Uniform<T>>
39{
40public:
41 Uniform(const Program * program, gl::GLint location);
42 Uniform(const Program * program, gl::GLint location, const T & value);
43 Uniform(const Program * program, const std::string & name);
44 Uniform(const Program * program, const std::string & name, const T & value);
45
46 virtual ~Uniform();
47
48 void set(const T & value);
49
50 const T & value() const;
51
52
53protected:
54 virtual void updateAt(gl::GLint location) const override;
55
56
57protected:
59};
60
61
62} // namespace globjects
63
64
65#include <globjects/Uniform.inl>
Abstract base class for templated Uniforms.
Definition: AbstractUniform.h:40
CRTP for creating objects similar to std::make_unique.
Definition: Instantiator.h:22
Wraps an OpenGL program.
Definition: Program.h:82
Wraps access to typed global GLSL variables.
Definition: Uniform.h:39
T m_value
The uniforms value, explictly required when relinking programs.
Definition: Uniform.h:58
Uniform(const Program *program, const std::string &name)
Uniform(const Program *program, const std::string &name, const T &value)
Uniform(const Program *program, gl::GLint location, const T &value)
Uniform(const Program *program, gl::GLint location)
const T & value() const
virtual void updateAt(gl::GLint location) const override
void set(const T &value)
Contains all the classes that wrap OpenGL functionality.