shader class has improved ownership handling stuff garbage thingies
This commit is contained in:
parent
d9cd0f19cb
commit
4fe91a12e2
|
@ -55,10 +55,10 @@ int main(int argc, char** argv)
|
||||||
{ 1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float)) }
|
{ 1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float)) }
|
||||||
};
|
};
|
||||||
|
|
||||||
oglu::Shader* shader;
|
oglu::Shader shader;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
shader = new oglu::Shader("shaders/vertexShader.vert", "shaders/fragmentShader.frag");
|
shader = oglu::MakeShader("shaders/vertexShader.vert", "shaders/fragmentShader.frag");
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef SHADER_HPP
|
#ifndef SHADER_HPP
|
||||||
#define SHADER_HPP
|
#define SHADER_HPP
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <core.hpp>
|
#include <core.hpp>
|
||||||
#include <glad/glad.h>
|
#include <glad/glad.h>
|
||||||
|
|
||||||
|
@ -8,11 +9,12 @@ namespace oglu
|
||||||
{
|
{
|
||||||
class Color;
|
class Color;
|
||||||
|
|
||||||
class OGLU_API Shader
|
class OGLU_API AbstractShader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Shader(const char* vertexShaderFile, const char* fragmentShaderFile);
|
friend std::shared_ptr<AbstractShader> OGLU_API MakeShader(const char* vertexShaderFile, const char* fragmentShaderFile);
|
||||||
~Shader();
|
AbstractShader(const AbstractShader& other);
|
||||||
|
~AbstractShader();
|
||||||
|
|
||||||
void Use();
|
void Use();
|
||||||
|
|
||||||
|
@ -123,11 +125,15 @@ namespace oglu
|
||||||
#pragma endregion Uniforms
|
#pragma endregion Uniforms
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
AbstractShader(const char* vertexShaderFile, const char* fragmentShaderFile);
|
||||||
|
|
||||||
void LoadShaderSource(const char* filename, char** buffer);
|
void LoadShaderSource(const char* filename, char** buffer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GLuint vertexShader, fragmentShader, program;
|
GLuint program;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef std::shared_ptr<AbstractShader> Shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
166
src/shader.cpp
166
src/shader.cpp
|
@ -9,14 +9,26 @@
|
||||||
|
|
||||||
namespace oglu
|
namespace oglu
|
||||||
{
|
{
|
||||||
Shader::Shader(const char* vertexShaderFile, const char* fragmentShaderFile) :
|
AbstractShader::AbstractShader(const AbstractShader& other) :
|
||||||
vertexShader(0), fragmentShader(0)
|
program(other.program)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<AbstractShader> MakeShader(const char* vertexShaderFile, const char* fragmentShaderFile)
|
||||||
|
{
|
||||||
|
AbstractShader* tmp = new AbstractShader(vertexShaderFile, fragmentShaderFile);
|
||||||
|
return std::shared_ptr<AbstractShader>(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
AbstractShader::AbstractShader(const char* vertexShaderFile, const char* fragmentShaderFile) :
|
||||||
|
program(0)
|
||||||
{
|
{
|
||||||
// Load vertex shader
|
// Load vertex shader
|
||||||
char* source = nullptr;
|
char* source = nullptr;
|
||||||
LoadShaderSource(vertexShaderFile, &source);
|
LoadShaderSource(vertexShaderFile, &source);
|
||||||
|
|
||||||
vertexShader = glCreateShader(GL_VERTEX_SHADER);
|
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
|
||||||
glShaderSource(vertexShader, 1, &source, NULL);
|
glShaderSource(vertexShader, 1, &source, NULL);
|
||||||
glCompileShader(vertexShader);
|
glCompileShader(vertexShader);
|
||||||
|
|
||||||
|
@ -34,7 +46,7 @@ namespace oglu
|
||||||
// Load Fragment shader
|
// Load Fragment shader
|
||||||
LoadShaderSource(fragmentShaderFile, &source);
|
LoadShaderSource(fragmentShaderFile, &source);
|
||||||
|
|
||||||
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||||
glShaderSource(fragmentShader, 1, &source, NULL);
|
glShaderSource(fragmentShader, 1, &source, NULL);
|
||||||
glCompileShader(fragmentShader);
|
glCompileShader(fragmentShader);
|
||||||
|
|
||||||
|
@ -65,148 +77,148 @@ namespace oglu
|
||||||
glDeleteShader(vertexShader);
|
glDeleteShader(vertexShader);
|
||||||
}
|
}
|
||||||
|
|
||||||
Shader::~Shader()
|
AbstractShader::~AbstractShader()
|
||||||
{
|
{
|
||||||
|
glDeleteProgram(program);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::Use()
|
void AbstractShader::Use()
|
||||||
{
|
{
|
||||||
glUseProgram(program);
|
glUseProgram(program);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLint Shader::GetUniformLocation(const GLchar* name)
|
GLint AbstractShader::GetUniformLocation(const GLchar* name)
|
||||||
{
|
{
|
||||||
return glGetUniformLocation(program, name);
|
return glGetUniformLocation(program, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma region Uniforms
|
#pragma region Uniforms
|
||||||
void Shader::SetUniform(const GLchar* name, GLfloat v0)
|
void AbstractShader::SetUniform(const GLchar* name, GLfloat v0)
|
||||||
{
|
{
|
||||||
glUniform1f(glGetUniformLocation(program, name), v0);
|
glUniform1f(glGetUniformLocation(program, name), v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLfloat v0)
|
void AbstractShader::SetUniform(GLint location, GLfloat v0)
|
||||||
{
|
{
|
||||||
glUniform1f(location, v0);
|
glUniform1f(location, v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1)
|
void AbstractShader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1)
|
||||||
{
|
{
|
||||||
glUniform2f(glGetUniformLocation(program, name), v0, v1);
|
glUniform2f(glGetUniformLocation(program, name), v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLfloat v0, GLfloat v1)
|
void AbstractShader::SetUniform(GLint location, GLfloat v0, GLfloat v1)
|
||||||
{
|
{
|
||||||
glUniform2f(location, v0, v1);
|
glUniform2f(location, v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1, GLfloat v2)
|
void AbstractShader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1, GLfloat v2)
|
||||||
{
|
{
|
||||||
glUniform3f(glGetUniformLocation(program, name), v0, v1, v2);
|
glUniform3f(glGetUniformLocation(program, name), v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
|
void AbstractShader::SetUniform(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
|
||||||
{
|
{
|
||||||
glUniform3f(location, v0, v1, v2);
|
glUniform3f(location, v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
void AbstractShader::SetUniform(const GLchar* name, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
||||||
{
|
{
|
||||||
glUniform4f(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
glUniform4f(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
void AbstractShader::SetUniform(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
||||||
{
|
{
|
||||||
glUniform4f(location, v0, v1, v2, v3);
|
glUniform4f(location, v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLint v0)
|
void AbstractShader::SetUniform(const GLchar* name, GLint v0)
|
||||||
{
|
{
|
||||||
glUniform1i(glGetUniformLocation(program, name), v0);
|
glUniform1i(glGetUniformLocation(program, name), v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLint v0)
|
void AbstractShader::SetUniform(GLint location, GLint v0)
|
||||||
{
|
{
|
||||||
glUniform1i(location, v0);
|
glUniform1i(location, v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLint v0, GLint v1)
|
void AbstractShader::SetUniform(const GLchar* name, GLint v0, GLint v1)
|
||||||
{
|
{
|
||||||
glUniform2i(glGetUniformLocation(program, name), v0, v1);
|
glUniform2i(glGetUniformLocation(program, name), v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLint v0, GLint v1)
|
void AbstractShader::SetUniform(GLint location, GLint v0, GLint v1)
|
||||||
{
|
{
|
||||||
glUniform2i(location, v0, v1);
|
glUniform2i(location, v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLint v0, GLint v1, GLint v2)
|
void AbstractShader::SetUniform(const GLchar* name, GLint v0, GLint v1, GLint v2)
|
||||||
{
|
{
|
||||||
glUniform3i(glGetUniformLocation(program, name), v0, v1, v2);
|
glUniform3i(glGetUniformLocation(program, name), v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLint v0, GLint v1, GLint v2)
|
void AbstractShader::SetUniform(GLint location, GLint v0, GLint v1, GLint v2)
|
||||||
{
|
{
|
||||||
glUniform3i(location, v0, v1, v2);
|
glUniform3i(location, v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLint v0, GLint v1, GLint v2, GLint v3)
|
void AbstractShader::SetUniform(const GLchar* name, GLint v0, GLint v1, GLint v2, GLint v3)
|
||||||
{
|
{
|
||||||
glUniform4i(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
glUniform4i(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
|
void AbstractShader::SetUniform(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
|
||||||
{
|
{
|
||||||
glUniform4i(location, v0, v1, v2, v3);
|
glUniform4i(location, v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLuint v0)
|
void AbstractShader::SetUniform(const GLchar* name, GLuint v0)
|
||||||
{
|
{
|
||||||
glUniform1ui(glGetUniformLocation(program, name), v0);
|
glUniform1ui(glGetUniformLocation(program, name), v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLuint v0)
|
void AbstractShader::SetUniform(GLint location, GLuint v0)
|
||||||
{
|
{
|
||||||
glUniform1ui(location, v0);
|
glUniform1ui(location, v0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLuint v0, GLuint v1)
|
void AbstractShader::SetUniform(const GLchar* name, GLuint v0, GLuint v1)
|
||||||
{
|
{
|
||||||
glUniform2ui(glGetUniformLocation(program, name), v0, v1);
|
glUniform2ui(glGetUniformLocation(program, name), v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLuint v0, GLuint v1)
|
void AbstractShader::SetUniform(GLint location, GLuint v0, GLuint v1)
|
||||||
{
|
{
|
||||||
glUniform2ui(location, v0, v1);
|
glUniform2ui(location, v0, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLuint v0, GLuint v1, GLuint v2)
|
void AbstractShader::SetUniform(const GLchar* name, GLuint v0, GLuint v1, GLuint v2)
|
||||||
{
|
{
|
||||||
glUniform3ui(glGetUniformLocation(program, name), v0, v1, v2);
|
glUniform3ui(glGetUniformLocation(program, name), v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLuint v0, GLuint v1, GLuint v2)
|
void AbstractShader::SetUniform(GLint location, GLuint v0, GLuint v1, GLuint v2)
|
||||||
{
|
{
|
||||||
glUniform3ui(location, v0, v1, v2);
|
glUniform3ui(location, v0, v1, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
void AbstractShader::SetUniform(const GLchar* name, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
||||||
{
|
{
|
||||||
glUniform4ui(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
glUniform4ui(glGetUniformLocation(program, name), v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
void AbstractShader::SetUniform(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
||||||
{
|
{
|
||||||
glUniform4ui(location, v0, v1, v2, v3);
|
glUniform4ui(location, v0, v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(const GLchar* name, const Color* v0, bool ignoreAlpha)
|
void AbstractShader::SetUniform(const GLchar* name, const Color* v0, bool ignoreAlpha)
|
||||||
{
|
{
|
||||||
SetUniform(glGetUniformLocation(program, name), v0, ignoreAlpha);
|
SetUniform(glGetUniformLocation(program, name), v0, ignoreAlpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform(GLint location, const Color* v0, bool ignoreAlpha)
|
void AbstractShader::SetUniform(GLint location, const Color* v0, bool ignoreAlpha)
|
||||||
{
|
{
|
||||||
if (ignoreAlpha)
|
if (ignoreAlpha)
|
||||||
glUniform3f(location, v0->r, v0->g, v0->b);
|
glUniform3f(location, v0->r, v0->g, v0->b);
|
||||||
|
@ -214,218 +226,218 @@ namespace oglu
|
||||||
glUniform4f(location, v0->r, v0->g, v0->b, v0->a);
|
glUniform4f(location, v0->r, v0->g, v0->b, v0->a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform1fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform1fv(glGetUniformLocation(program, name), count, value);
|
glUniform1fv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1fv(GLint location, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform1fv(GLint location, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform1fv(location, count, value);
|
glUniform1fv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform2fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform2fv(glGetUniformLocation(program, name), count, value);
|
glUniform2fv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2fv(GLint location, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform2fv(GLint location, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform2fv(location, count, value);
|
glUniform2fv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform3fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform3fv(glGetUniformLocation(program, name), count, value);
|
glUniform3fv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3fv(GLint location, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform3fv(GLint location, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform3fv(location, count, value);
|
glUniform3fv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform4fv(const GLchar* name, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform4fv(glGetUniformLocation(program, name), count, value);
|
glUniform4fv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4fv(GLint location, GLsizei count, const GLfloat* value)
|
void AbstractShader::SetUniform4fv(GLint location, GLsizei count, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniform4fv(location, count, value);
|
glUniform4fv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1iv(const GLchar* name, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform1iv(const GLchar* name, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform1iv(glGetUniformLocation(program, name), count, value);
|
glUniform1iv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1iv(GLint location, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform1iv(GLint location, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform1iv(location, count, value);
|
glUniform1iv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2iv(const GLchar* name, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform2iv(const GLchar* name, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform2iv(glGetUniformLocation(program, name), count, value);
|
glUniform2iv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2iv(GLint location, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform2iv(GLint location, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform2iv(location, count, value);
|
glUniform2iv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3iv(const GLchar* name, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform3iv(const GLchar* name, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform3iv(glGetUniformLocation(program, name), count, value);
|
glUniform3iv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3iv(GLint location, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform3iv(GLint location, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform3iv(location, count, value);
|
glUniform3iv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4iv(const GLchar* name, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform4iv(const GLchar* name, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform4iv(glGetUniformLocation(program, name), count, value);
|
glUniform4iv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4iv(GLint location, GLsizei count, const GLint* value)
|
void AbstractShader::SetUniform4iv(GLint location, GLsizei count, const GLint* value)
|
||||||
{
|
{
|
||||||
glUniform4iv(location, count, value);
|
glUniform4iv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform1uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform1uiv(glGetUniformLocation(program, name), count, value);
|
glUniform1uiv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform1uiv(GLint location, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform1uiv(GLint location, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform1uiv(location, count, value);
|
glUniform1uiv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform2uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform2uiv(glGetUniformLocation(program, name), count, value);
|
glUniform2uiv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform2uiv(GLint location, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform2uiv(GLint location, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform2uiv(location, count, value);
|
glUniform2uiv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform3uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform3uiv(glGetUniformLocation(program, name), count, value);
|
glUniform3uiv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform3uiv(GLint location, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform3uiv(GLint location, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform3uiv(location, count, value);
|
glUniform3uiv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform4uiv(const GLchar* name, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform4uiv(glGetUniformLocation(program, name), count, value);
|
glUniform4uiv(glGetUniformLocation(program, name), count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniform4uiv(GLint location, GLsizei count, const GLuint* value)
|
void AbstractShader::SetUniform4uiv(GLint location, GLsizei count, const GLuint* value)
|
||||||
{
|
{
|
||||||
glUniform4uiv(location, count, value);
|
glUniform4uiv(location, count, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix2fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2fv(location, count, transpose, value);
|
glUniformMatrix2fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix3fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3fv(location, count, transpose, value);
|
glUniformMatrix3fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix4fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4fv(location, count, transpose, value);
|
glUniformMatrix4fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2x3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2x3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2x3fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix2x3fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2x3fv(location, count, transpose, value);
|
glUniformMatrix2x3fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3x2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3x2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3x2fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix3x2fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3x2fv(location, count, transpose, value);
|
glUniformMatrix3x2fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2x4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2x4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2x4fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix2x4fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix2x4fv(location, count, transpose, value);
|
glUniformMatrix2x4fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4x2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4x2fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4x2fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix4x2fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4x2fv(location, count, transpose, value);
|
glUniformMatrix4x2fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3x4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3x4fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3x4fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix3x4fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix3x4fv(location, count, transpose, value);
|
glUniformMatrix3x4fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4x3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4x3fv(const GLchar* name, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4x3fv(glGetUniformLocation(program, name), count, transpose, value);
|
glUniformMatrix4x3fv(glGetUniformLocation(program, name), count, transpose, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::SetUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
void AbstractShader::SetUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
|
||||||
{
|
{
|
||||||
glUniformMatrix4x3fv(location, count, transpose, value);
|
glUniformMatrix4x3fv(location, count, transpose, value);
|
||||||
}
|
}
|
||||||
#pragma endregion Uniforms
|
#pragma endregion Uniforms
|
||||||
|
|
||||||
void Shader::LoadShaderSource(const char* filename, char** buffer)
|
void AbstractShader::LoadShaderSource(const char* filename, char** buffer)
|
||||||
{
|
{
|
||||||
std::ifstream file(filename);
|
std::ifstream file(filename);
|
||||||
if (!file.good())
|
if (!file.good())
|
||||||
|
|
Loading…
Reference in a new issue