❖
Monad Engine
da02fba2
>
Undercity Codex
_
Loading...
Searching...
No Matches
ShaderProgram.cpp
Go to the documentation of this file.
1
#include "graphics/ShaderProgram.h"
2
#include "graphics/Texture.h"
3
#include <glm/gtc/type_ptr.hpp>
4
5
namespace
eng
6
{
7
ShaderProgram::ShaderProgram
(
GLuint
shaderProgramID) : m_shaderProgramID(shaderProgramID)
8
{
9
}
10
11
ShaderProgram::~ShaderProgram
()
12
{
13
glDeleteProgram(m_shaderProgramID);
14
}
15
16
void
ShaderProgram::Bind
()
17
{
18
glUseProgram(m_shaderProgramID);
19
m_currentTextureUnit = 0;
20
}
21
22
GLint
ShaderProgram::GetUniformLocation
(
const
std::string& name)
23
{
24
auto
it = m_uniformLocationCache.find(name);
25
if
(it != m_uniformLocationCache.end())
26
{
27
return
it->second;
28
}
29
GLint
location = glGetUniformLocation(m_shaderProgramID, name.c_str());
30
m_uniformLocationCache[name] = location;
31
return
location;
32
}
33
34
void
ShaderProgram::SetUniform
(
const
std::string& name,
float
value)
35
{
36
auto
location =
GetUniformLocation
(name);
37
glUniform1f(location, value);
38
}
39
40
void
ShaderProgram::SetUniform
(
const
std::string& name,
float
v0,
float
v1)
41
{
42
auto
location =
GetUniformLocation
(name);
43
glUniform2f(location, v0, v1);
44
}
45
46
void
ShaderProgram::SetUniform
(
const
std::string& name,
const
glm::mat4& mat)
47
{
48
auto
location =
GetUniformLocation
(name);
49
glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(mat));
50
}
51
52
void
ShaderProgram::SetUniform
(
const
std::string& name,
const
glm::vec3& value)
53
{
54
auto
location =
GetUniformLocation
(name);
55
glUniform3fv(location, 1, glm::value_ptr(value));
56
}
57
58
void
ShaderProgram::SetUniform
(
const
std::string& name,
const
glm::vec4& value)
59
{
60
auto
location =
GetUniformLocation
(name);
61
glUniform4fv(location, 1, glm::value_ptr(value));
62
}
63
64
void
ShaderProgram::SetTexture
(
const
std::string& name,
Texture
* texture)
65
{
66
auto
location =
GetUniformLocation
(name);
67
68
glActiveTexture(GL_TEXTURE0 + m_currentTextureUnit);
69
glBindTexture(GL_TEXTURE_2D, texture->
GetID
());
70
glUniform1i(location, m_currentTextureUnit);
71
++m_currentTextureUnit;
72
}
73
}
GLint
int GLint
Definition
GLForward.h:13
GLuint
unsigned int GLuint
Definition
GLForward.h:11
eng::ShaderProgram::Bind
void Bind()
Definition
ShaderProgram.cpp:16
eng::ShaderProgram::GetUniformLocation
GLint GetUniformLocation(const std::string &name)
Definition
ShaderProgram.cpp:22
eng::ShaderProgram::ShaderProgram
ShaderProgram()=delete
eng::ShaderProgram::SetUniform
void SetUniform(const std::string &name, float value)
Definition
ShaderProgram.cpp:34
eng::ShaderProgram::SetTexture
void SetTexture(const std::string &name, Texture *texture)
Definition
ShaderProgram.cpp:64
eng::ShaderProgram::~ShaderProgram
~ShaderProgram()
Definition
ShaderProgram.cpp:11
eng::Texture
Definition
Texture.h:11
eng::Texture::GetID
GLuint GetID() const
Definition
Texture.cpp:23
eng
Definition
Application.cpp:4
docs
GD-Engine-lesson-5-2
engine
source
graphics
ShaderProgram.cpp
Generated by
1.9.8