32#include <glm/gtc/type_ptr.hpp>
107 NODISCARD const std::unordered_map<std::string, ShaderValue>&
Uniforms()
const {
return m_Uniforms; }
119 if (m_Uniforms.contains(uniformName))
121 return m_Uniforms.at(uniformName).Id;
131 std::unordered_map<std::string, ShaderValue> m_Uniforms{};
132 std::unordered_map<std::string, ShaderValue> m_Attributes{};
140 glUniform1i(
id, value);
146 glUniform1i(
id, value);
151 glUniform1i(
id, value);
156 glUniform1f(
id, value);
161 glUniform2i(
id, value.x, value.y);
166 glUniform2f(
id, value.x, value.y);
171 glUniform3f(
id, value.x, value.y, value.z);
176 glUniform4f(
id, value.x, value.y, value.z, value.w);
181 glUniformMatrix3fv(
id, 1, GL_FALSE, glm::value_ptr(value));
186 glUniformMatrix4fv(
id, 1, GL_FALSE, glm::value_ptr(value));
#define ASSERT(x)
Definition Assert.h:37
unsigned __int32 u32
Unsigned integer 32 bit type.
Definition BasicTypes.h:55
unsigned __int16 u16
Unsigned integer 16 bit type.
Definition BasicTypes.h:53
signed __int32 i32
Singed integer 32 bit type.
Definition BasicTypes.h:40
#define NODISCARD
Definition Common.h:80
Definition OpenGLShader.h:70
void UnBind() const
Definition OpenGLShader.cpp:165
OpenGLShader(u32 id)
Definition OpenGLShader.cpp:30
NODISCARD size_t AttributeCount() const
Definition OpenGLShader.h:106
virtual ~OpenGLShader()
Definition OpenGLShader.cpp:154
NODISCARD GLint GetUniformLocation(const std::string &uniformName) const
Definition OpenGLShader.h:112
NODISCARD const std::unordered_map< std::string, ShaderValue > & Uniforms() const
Definition OpenGLShader.h:107
DEFAULT_MOVE_AND_COPY(OpenGLShader)
NODISCARD const std::unordered_map< std::string, ShaderValue > & Attributes() const
Definition OpenGLShader.h:108
NODISCARD u32 Id() const
Definition OpenGLShader.h:109
void SetUniformRef(u32 id, const T &value)
Definition OpenGLShader.h:88
void SetUniform(const char *uniformName, T value)
Definition OpenGLShader.h:94
void Bind() const
Definition OpenGLShader.cpp:160
void SetUniform(u32 id, T value)
Definition OpenGLShader.h:83
NODISCARD GLint GetUniformLocation(const char *uniformName) const
Definition OpenGLShader.h:117
NODISCARD OpenGLShaderType ShaderType() const
Definition OpenGLShader.h:104
void SetUniformRef(const char *uniformName, const T &value)
Definition OpenGLShader.h:99
NODISCARD size_t UniformCount() const
Definition OpenGLShader.h:105
u32 CompileShader(const ShaderFileData &data)
Definition OpenGLShaderCompiler.cpp:124
Definition OpenGLCommon.h:47
OpenGLShaderType
Definition OpenGLShader.h:37
@ MAX
Definition OpenGLShader.h:44
@ VERTEX
Definition OpenGLShader.h:38
@ FRAGMENT
Definition OpenGLShader.h:41
@ TESSELATION
Definition OpenGLShader.h:39
@ GEOMETRY
Definition OpenGLShader.h:40
@ COMPUTE
Definition OpenGLShader.h:42
UniformType
Definition OpenGLShader.h:48
glm::vec4 V4
4D Vector; 32 bit floating point components
Definition MathTypes.h:53
glm::mat4x4 Mat4
Definition MathTypes.h:80
glm::ivec2 Iv2
2D Vector; 32 bit integer components
Definition MathTypes.h:44
glm::mat3x3 Mat3
3x3 Matrix: 32 bit floating point components
Definition MathTypes.h:77
glm::vec2 V2
2D Vector; 32 bit floating point components
Definition MathTypes.h:41
glm::vec3 V3
3D Vector; 32 bit floating point components
Definition MathTypes.h:47
Definition OpenGLShader.h:63
UniformType Type
Definition OpenGLShader.h:66
size_t Size
Definition OpenGLShader.h:64
GLint Id
Definition OpenGLShader.h:65