Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
Loading...
Searching...
No Matches
shader_program.hpp
Go to the documentation of this file.
1
11
12#ifndef FOOLSENGINE_SHADERPROGRAM_H
13#define FOOLSENGINE_SHADERPROGRAM_H
14
15#include <string>
16#include <map>
17
18#include <GL/glew.h>
19#include <glm/glm.hpp>
20
22
23namespace ToyMaker {
24
30 class ShaderProgram: public Resource<ShaderProgram> {
31 public:
37 inline static std::string getResourceTypeName() { return "ShaderProgram"; }
38
44 ShaderProgram(GLuint program);
45
50
51
52 ShaderProgram(const ShaderProgram& other) = delete;
53 ShaderProgram& operator=(const ShaderProgram& other) = delete;
54
58 ShaderProgram(ShaderProgram&& other) noexcept;
62 ShaderProgram& operator=(ShaderProgram&& other) noexcept;
63
67 void use() const;
68
75 GLint getLocationAttribArray(const std::string& name) const;
76
82 void enableAttribArray(const std::string& name) const;
83
89 void enableAttribArray(GLint locationAttrib) const;
90
96 void disableAttribArray(const std::string& name) const;
97
103 void disableAttribArray(GLint locationAttrib) const;
104
111 GLint getLocationUniform(const std::string& name) const;
112
119 void setUBool(const std::string& name, bool value) const;
120
127 void setUInt(const std::string& name, int value) const;
128
135 void setUFloat(const std::string& name, float value) const;
136
143 void setUVec2(const std::string& name, const glm::vec2& value) const;
144
151 void setUVec3(const std::string& name, const glm::vec3& value) const;
152
159 void setUVec4(const std::string& name, const glm::vec4& value) const;
160
167 void setUMat4(const std::string& name, const glm::mat4& value) const;
168
177 GLint getLocationUniformBlock(const std::string& name) const;
178
187 void setUniformBlock(const std::string& name, GLuint bindingPoint) const;
188
194 GLuint getProgramID() const;
195
196 private:
201 void destroyResource();
202
207 void releaseResource();
208
213 GLuint mID;
214 };
215
329 class ShaderProgramFromFile: public ResourceConstructor<ShaderProgram, ShaderProgramFromFile> {
330 public:
331 ShaderProgramFromFile():
333 {}
334 inline static std::string getResourceConstructorName() { return "fromFile"; }
335 private:
336 std::shared_ptr<IResource> createResource(const nlohmann::json& methodParameters) override;
337 };
338
339}
340
341#endif
ResourceConstructor(int explicitlyInitializeMe)
Definition resource_database.hpp:491
Resource(int explicitlyInitializeMe)
Definition resource_database.hpp:389
std::shared_ptr< IResource > createResource(const nlohmann::json &methodParameters) override
Creates a resource object using the parameters specified in methodParameters.
Definition shader_program.cpp:243
A wrapper over OpenGL's shader programs.
Definition shader_program.hpp:30
void setUVec4(const std::string &name, const glm::vec4 &value) const
Sets a vec4 uniform's value.
Definition shader_program.cpp:200
void disableAttribArray(const std::string &name) const
Disables an attrib array with a given name.
Definition shader_program.cpp:147
void setUVec2(const std::string &name, const glm::vec2 &value) const
Sets a vec2 uniform's value.
Definition shader_program.cpp:181
~ShaderProgram()
Shader destructor; deletes shader from memory.
Definition shader_program.cpp:95
void setUFloat(const std::string &name, float value) const
Sets a float uniform's value.
Definition shader_program.cpp:173
void setUMat4(const std::string &name, const glm::mat4 &value) const
Sets a mat4 uniform's value.
Definition shader_program.cpp:209
GLint getLocationUniformBlock(const std::string &name) const
Gets the ID of one of this shader's uniform blocks with a certain name.
Definition shader_program.cpp:134
void setUInt(const std::string &name, int value) const
Sets an int uniform's value.
Definition shader_program.cpp:165
void setUVec3(const std::string &name, const glm::vec3 &value) const
Sets a vec3 uniform's value.
Definition shader_program.cpp:191
GLuint mID
The ID of the shader program this object is a wrapper over.
Definition shader_program.hpp:213
ShaderProgram(GLuint program)
Constructs a new shader program out of an OpenGL shader program already present in memory.
Definition shader_program.cpp:25
GLint getLocationUniform(const std::string &name) const
Gets the location (ID) of a uniform with a given name.
Definition shader_program.cpp:131
GLint getLocationAttribArray(const std::string &name) const
Retrieves the location (ID) of an attrib array with a given name.
Definition shader_program.cpp:128
void setUniformBlock(const std::string &name, GLuint bindingPoint) const
Binds this shader's named uniform block to a specific uniform binding point.
Definition shader_program.cpp:219
void use() const
Makes this shader the active one in this program's OpenGL context.
Definition shader_program.cpp:126
void destroyResource()
Destroys the shader resource associated with this object.
Definition shader_program.cpp:234
GLuint getProgramID() const
Returns the ID of the OpenGL shader program this class is a wrapper over.
Definition shader_program.cpp:125
void setUBool(const std::string &name, bool value) const
Sets a uniform boolean value.
Definition shader_program.cpp:157
void enableAttribArray(const std::string &name) const
Enables an attrib array with a given name.
Definition shader_program.cpp:138
void releaseResource()
Releases the shader resource associated with this object, assuming that it will be picked up by anoth...
Definition shader_program.cpp:239
static std::string getResourceTypeName()
The resource type string associated with this class.
Definition shader_program.hpp:37
Namespace containing all class definitions and functions related to the ToyMaker engine.
Definition camera_system.hpp:20
Headers relating to resources and their management for a given project.