added namespace
This commit is contained in:
parent
8c789f57cb
commit
de7cbdabbd
11 changed files with 484 additions and 429 deletions
139
src/Shader.cpp
139
src/Shader.cpp
|
@ -8,90 +8,95 @@
|
|||
#define IMPLEMENT_UNIFORM_FUNCTION(type, func) \
|
||||
inline
|
||||
|
||||
AbstractShader::AbstractShader(const std::string& vertexShader, const std::string& fragmentShader) :
|
||||
id(0)
|
||||
namespace lol
|
||||
{
|
||||
GLint success;
|
||||
GLchar infoLog[512];
|
||||
|
||||
GLuint vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
||||
const char* vertexShaderSource = vertexShader.c_str();
|
||||
glShaderSource(vertexShaderID, 1, &vertexShaderSource, NULL);
|
||||
glCompileShader(vertexShaderID);
|
||||
|
||||
glGetShaderiv(vertexShaderID, GL_COMPILE_STATUS, &success);
|
||||
if (!success)
|
||||
AbstractShader::AbstractShader(const std::string& vertexShader, const std::string& fragmentShader) :
|
||||
id(0)
|
||||
{
|
||||
glGetShaderInfoLog(vertexShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Vertex shader creation failed: \n" << infoLog << std::endl;
|
||||
GLint success;
|
||||
GLchar infoLog[512];
|
||||
|
||||
glDeleteShader(vertexShaderID);
|
||||
return;
|
||||
}
|
||||
GLuint vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
||||
const char* vertexShaderSource = vertexShader.c_str();
|
||||
glShaderSource(vertexShaderID, 1, &vertexShaderSource, NULL);
|
||||
glCompileShader(vertexShaderID);
|
||||
|
||||
GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
const char* fragmentShaderSource = fragmentShader.c_str();
|
||||
glShaderSource(fragmentShaderID, 1, &fragmentShaderSource, NULL);
|
||||
glCompileShader(fragmentShaderID);
|
||||
glGetShaderiv(vertexShaderID, GL_COMPILE_STATUS, &success);
|
||||
if (!success)
|
||||
{
|
||||
glGetShaderInfoLog(vertexShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Vertex shader creation failed: \n" << infoLog << std::endl;
|
||||
|
||||
glGetShaderiv(fragmentShaderID, GL_COMPILE_STATUS, &success);
|
||||
if (!success)
|
||||
{
|
||||
glGetShaderInfoLog(fragmentShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Fragment shader creation failed: \n" << infoLog << std::endl;
|
||||
glDeleteShader(vertexShaderID);
|
||||
return;
|
||||
}
|
||||
|
||||
GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
const char* fragmentShaderSource = fragmentShader.c_str();
|
||||
glShaderSource(fragmentShaderID, 1, &fragmentShaderSource, NULL);
|
||||
glCompileShader(fragmentShaderID);
|
||||
|
||||
glGetShaderiv(fragmentShaderID, GL_COMPILE_STATUS, &success);
|
||||
if (!success)
|
||||
{
|
||||
glGetShaderInfoLog(fragmentShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Fragment shader creation failed: \n" << infoLog << std::endl;
|
||||
|
||||
glDeleteShader(fragmentShaderID);
|
||||
glDeleteShader(vertexShaderID);
|
||||
return;
|
||||
}
|
||||
|
||||
id = glCreateProgram();
|
||||
glAttachShader(id, vertexShaderID);
|
||||
glAttachShader(id, fragmentShaderID);
|
||||
glLinkProgram(id);
|
||||
|
||||
glGetProgramiv(id, GL_LINK_STATUS, &success);
|
||||
if (!success)
|
||||
{
|
||||
glGetProgramInfoLog(fragmentShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Shader program linking failed: \n" << infoLog << std::endl;
|
||||
|
||||
glDeleteShader(fragmentShaderID);
|
||||
glDeleteShader(vertexShaderID);
|
||||
|
||||
id = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
glDeleteShader(fragmentShaderID);
|
||||
glDeleteShader(vertexShaderID);
|
||||
return;
|
||||
}
|
||||
|
||||
id = glCreateProgram();
|
||||
glAttachShader(id, vertexShaderID);
|
||||
glAttachShader(id, fragmentShaderID);
|
||||
glLinkProgram(id);
|
||||
|
||||
glGetProgramiv(id, GL_LINK_STATUS, &success);
|
||||
if (!success)
|
||||
AbstractShader::~AbstractShader()
|
||||
{
|
||||
glGetProgramInfoLog(fragmentShaderID, 512, NULL, infoLog);
|
||||
std::cerr << "Shader program linking failed: \n" << infoLog << std::endl;
|
||||
|
||||
glDeleteShader(fragmentShaderID);
|
||||
glDeleteShader(vertexShaderID);
|
||||
|
||||
id = 0;
|
||||
|
||||
return;
|
||||
glDeleteProgram(id);
|
||||
}
|
||||
|
||||
glDeleteShader(fragmentShaderID);
|
||||
glDeleteShader(vertexShaderID);
|
||||
}
|
||||
void AbstractShader::Use()
|
||||
{
|
||||
glUseProgram(id);
|
||||
}
|
||||
|
||||
AbstractShader::~AbstractShader()
|
||||
{
|
||||
glDeleteProgram(id);
|
||||
}
|
||||
void AbstractShader::SetUniform(const std::string& name, const glm::mat4& value)
|
||||
{
|
||||
GLint location = glGetUniformLocation(id, name.c_str());
|
||||
if (location == -1)
|
||||
return;
|
||||
|
||||
void AbstractShader::Use()
|
||||
{
|
||||
glUseProgram(id);
|
||||
}
|
||||
glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(value));
|
||||
}
|
||||
|
||||
void AbstractShader::SetUniform(const std::string& name, const glm::mat4& value)
|
||||
{
|
||||
GLint location = glGetUniformLocation(id, name.c_str());
|
||||
if (location == -1)
|
||||
return;
|
||||
void AbstractShader::SetUniform(const std::string& name, const glm::vec4& value)
|
||||
{
|
||||
GLint location = glGetUniformLocation(id, name.c_str());
|
||||
if (location == -1)
|
||||
return;
|
||||
|
||||
glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(value));
|
||||
}
|
||||
glUniform4fv(location, 1, glm::value_ptr(value));
|
||||
}
|
||||
|
||||
void AbstractShader::SetUniform(const std::string& name, const glm::vec4& value)
|
||||
{
|
||||
GLint location = glGetUniformLocation(id, name.c_str());
|
||||
if (location == -1)
|
||||
return;
|
||||
|
||||
glUniform4fv(location, 1, glm::value_ptr(value));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue