added namespace

This commit is contained in:
Lauchmelder 2021-12-23 00:51:59 +01:00
parent 8c789f57cb
commit de7cbdabbd
11 changed files with 484 additions and 429 deletions

View file

@ -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));
}