Muto 0.0.1
Cross-Platform Application Template
GitHub Repo | Muto Updates | Muto's Author
Loading...
Searching...
No Matches
OpenGLShader.h
Go to the documentation of this file.
1#pragma once
2
3#include "Renderer/Shader.h"
4#include <glm/glm.hpp>
5
6// TODO: Remove this
7typedef unsigned int GLenum;
8
9namespace Muto {
10
11 class OpenGLShader : public Shader
12 {
13 public:
14 OpenGLShader(const std::string& filepath);
15 OpenGLShader(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc);
16 ~OpenGLShader();
17
18 void Bind() const override;
19 void Unbind() const override;
20
21 virtual void SetMat4(const std::string& name, const glm::mat4& value) override;
22 virtual void SetFloat4(const std::string& name, const glm::vec4& value) override;
23 virtual void SetFloat3(const std::string& name, const glm::vec3& value) override;
24 virtual void SetFloat(const std::string& name, float value) override;
25 virtual void SetInt(const std::string& name, int value) override;
26 virtual void SetIntArray(const std::string& name, int* values, uint32_t count) override;
27
28 virtual const std::string& GetName() const override { return m_Name; }
29
30 void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
31 void UploadUniformMat3(const std::string& name, const glm::mat3& matrix);
32
33 void UploadUniformFloat4(const std::string& name, const glm::vec4& values);
34 void UploadUniformFloat3(const std::string& name, const glm::vec3& values);
35 void UploadUniformFloat2(const std::string& name, const glm::vec2& values);
36 void UploadUniformFloat(const std::string& name, float value);
37
38 void UploadUniformInt(const std::string& name, int value);
39
40 private:
41 std::string ReadFile(const std::string& filepath);
42 std::unordered_map<GLenum, std::string> PreProcess(const std::string& source);
43 void Compile(std::unordered_map<GLenum, std::string>& shaderSources);
44 private:
45 unsigned int m_RendererID;
46 std::string m_Name;
47 };
48}
#define MU_CORE_ASSERT(x,...)
Definition Asserts.h:32
#define MU_PROFILE_FUNCTION()
Definition Instrumentor.h:240
#define MU_CORE_ERROR(...)
error: indicates an error that has occurred
Definition Log.h:42
unsigned int GLenum
Definition OpenGLShader.h:7
Definition OpenGLShader.h:12
void UploadUniformFloat3(const std::string &name, const glm::vec3 &values)
Definition OpenGLShader.cpp:242
virtual void SetFloat3(const std::string &name, const glm::vec3 &value) override
Sets a 3-component float vector uniform in the shader.
Definition OpenGLShader.cpp:192
std::string ReadFile(const std::string &filepath)
Definition OpenGLShader.cpp:52
std::string m_Name
Definition OpenGLShader.h:46
virtual const std::string & GetName() const override
Definition OpenGLShader.h:28
void UploadUniformFloat4(const std::string &name, const glm::vec4 &values)
Definition OpenGLShader.cpp:236
virtual void SetMat4(const std::string &name, const glm::mat4 &value) override
Sets a 4x4 matrix uniform in the shader.
Definition OpenGLShader.cpp:217
OpenGLShader(const std::string &filepath)
Definition OpenGLShader.cpp:21
virtual void SetIntArray(const std::string &name, int *values, uint32_t count) override
Sets an array of integers uniform in the shader.
Definition OpenGLShader.cpp:210
void UploadUniformMat3(const std::string &name, const glm::mat3 &matrix)
Definition OpenGLShader.cpp:230
virtual void SetFloat(const std::string &name, float value) override
Sets a single float uniform in the shader.
Definition OpenGLShader.cpp:198
std::unordered_map< GLenum, std::string > PreProcess(const std::string &source)
Definition OpenGLShader.cpp:72
virtual void SetFloat4(const std::string &name, const glm::vec4 &value) override
Sets a 4-component float vector uniform in the shader.
Definition OpenGLShader.cpp:186
void Compile(std::unordered_map< GLenum, std::string > &shaderSources)
Definition OpenGLShader.cpp:97
void UploadUniformFloat2(const std::string &name, const glm::vec2 &values)
Definition OpenGLShader.cpp:248
void Bind() const override
connects the shader program for use.
Definition OpenGLShader.cpp:173
virtual void SetInt(const std::string &name, int value) override
Sets a single integer uniform in the shader.
Definition OpenGLShader.cpp:204
OpenGLShader(const std::string &name, const std::string &vertexSrc, const std::string &fragmentSrc)
Definition OpenGLShader.cpp:36
~OpenGLShader()
Definition OpenGLShader.cpp:46
unsigned int m_RendererID
Definition OpenGLShader.h:45
void UploadUniformInt(const std::string &name, int value)
Definition OpenGLShader.cpp:260
void UploadUniformFloat(const std::string &name, float value)
Definition OpenGLShader.cpp:254
void Unbind() const override
disconnects the shader program.
Definition OpenGLShader.cpp:179
void UploadUniformMat4(const std::string &name, const glm::mat4 &matrix)
Definition OpenGLShader.cpp:224
An abstraction for a shader program.
Definition Shader.h:16
The main namespace for the Muto engine.
Definition Application.cpp:15
static GLenum ShaderTypeFromString(const std::string &type)
Definition OpenGLShader.cpp:10