diff options
author | majortom6 <tombarrett@siu.edu> | 2017-02-25 12:42:41 -0600 |
---|---|---|
committer | Tom Barrett <tombarrett@siu.edu> | 2017-03-07 13:23:41 -0600 |
commit | d10f3df359cbccd1d7ee13b7981fee575a90637f (patch) | |
tree | c6faefd9c6f24663b0ae4bdee505d6456e8208a1 /src/geoshader.cpp | |
parent | 86fba51a32de6528cead5fdf24846d1e0540cad9 (diff) |
-began refractoring src
-reduced area creatures and resources spawn
-everything should be on 8 spaces now
-reorganized creatures action function to make more logical sense
-stripped out unused parts of geoshader and spritebatch
Diffstat (limited to 'src/geoshader.cpp')
-rw-r--r-- | src/geoshader.cpp | 130 |
1 files changed, 60 insertions, 70 deletions
diff --git a/src/geoshader.cpp b/src/geoshader.cpp index 3bd172b..4481a2e 100644 --- a/src/geoshader.cpp +++ b/src/geoshader.cpp @@ -4,112 +4,102 @@ GeoShader::GeoShader(const std::string& fileName) { - m_program = glCreateProgram(); + m_program = glCreateProgram(); - /* load shader from static vars - m_shaders[0] = CreateShader(GL_VERTEX_SHADER, vertexShaderSrc); - m_shaders[1] = CreateShader(GL_FRAGMENT_SHADER, fragmentShaderSrc); - m_shaders[2] = CreateShader(GL_GEOMETRY_SHADER, geometryShaderSrc); - */ + m_shaders[0] = CreateShader(LoadShader(fileName + ".vert"), GL_VERTEX_SHADER); + m_shaders[1] = CreateShader(LoadShader(fileName + ".frag"), GL_FRAGMENT_SHADER); + m_shaders[2] = CreateShader(LoadShader(fileName + ".geom"), GL_GEOMETRY_SHADER); - m_shaders[0] = CreateShader(LoadShader(fileName + ".vert"), GL_VERTEX_SHADER); - m_shaders[1] = CreateShader(LoadShader(fileName + ".frag"), GL_FRAGMENT_SHADER); - m_shaders[2] = CreateShader(LoadShader(fileName + ".geom"), GL_GEOMETRY_SHADER); + int i; + for(i=0; i < NUM_SHADERS; i++) + glAttachShader(m_program, m_shaders[i]); + glLinkProgram(m_program); + CheckShaderError(m_program, GL_LINK_STATUS, true, "error shader failed to link: "); - for(unsigned int i=0; i < NUM_SHADERS; i++) - glAttachShader(m_program, m_shaders[i]); + glValidateProgram(m_program); + CheckShaderError(m_program, GL_VALIDATE_STATUS, true, "error shader is invalid: "); - glLinkProgram(m_program); - CheckShaderError(m_program, GL_LINK_STATUS, true, "error shader failed to link: "); - - glValidateProgram(m_program); - CheckShaderError(m_program, GL_VALIDATE_STATUS, true, "error shader is invalid: "); - - glUseProgram(m_program); + glUseProgram(m_program); } GeoShader::~GeoShader() { - for(unsigned int i=0; i< NUM_SHADERS; i++){ - glDetachShader(m_program, m_shaders[i]); - glDeleteShader(m_shaders[i]); - } + int i; + for(i=0; i< NUM_SHADERS; i++){ + glDetachShader(m_program, m_shaders[i]); + glDeleteShader(m_shaders[i]); + } } void GeoShader::Bind() { - glUseProgram(m_program); + glUseProgram(m_program); } void GeoShader::Update(const Transform& transform, const Camera& camera) { - glm::mat4 MVP = transform.GetMVP(camera); - glm::mat4 Normal = transform.GetModel(); + glm::mat4 MVP = transform.GetMVP(camera); + glm::mat4 Normal = transform.GetModel(); - glUniformMatrix4fv(m_uniforms[0], 1, GL_FALSE, &MVP[0][0]); + glUniformMatrix4fv(m_uniforms[0], 1, GL_FALSE, &MVP[0][0]); } GLuint GeoShader::CreateShader(const std::string& text, GLenum shaderType) { - GLuint shader = glCreateShader(shaderType); - if(shader == 0) - std::cerr << "Error: Shader Creation Failed" << std::endl; - - const GLchar* shaderSource[1]; - GLint shaderSourceLengths[1]; - - shaderSource[0] = text.c_str(); - shaderSourceLengths[0] = text.length(); - - glShaderSource(shader, 1, shaderSource, shaderSourceLengths); - glCompileShader(shader); - - CheckShaderError(shader, GL_COMPILE_STATUS, false, "error shader compilation failed to link: "); - - return shader; + GLuint shader = glCreateShader(shaderType); + + const GLchar* shaderSource[1]; + GLint shaderSourceLengths[1]; + + shaderSource[0] = text.c_str(); + shaderSourceLengths[0] = text.length(); + + glShaderSource(shader, 1, shaderSource, shaderSourceLengths); + glCompileShader(shader); + + return shader; } void GeoShader::CheckShaderError(GLuint shader, GLuint flag, bool isProgram, const std::string& errorMessage) { - GLint success = 0; - GLchar error[1024] = { 0 }; - - if(isProgram) - glGetProgramiv(shader, flag, &success); - else - glGetShaderiv(shader, flag, &success); + GLint success = 0; + GLchar error[1024] = { 0 }; - if(success == GL_FALSE) - { if(isProgram) - glGetProgramInfoLog(shader, sizeof(error), NULL, error); + glGetProgramiv(shader, flag, &success); else - glGetShaderInfoLog(shader, sizeof(error), NULL, error); - - std::cerr << errorMessage << ": '" << error << "'" << std::endl; - } + glGetShaderiv(shader, flag, &success); + + if(success == GL_FALSE){ + if(isProgram) + glGetProgramInfoLog(shader, sizeof(error), NULL, error); + else + glGetShaderInfoLog(shader, sizeof(error), NULL, error); + + std::cerr << errorMessage << ": '" << error << "'" << std::endl; + } } std::string GeoShader::LoadShader(const std::string& fileName) { - std::ifstream file; - file.open((fileName).c_str()); + std::ifstream file; + file.open((fileName).c_str()); - std::string output; - std::string line; + std::string output; + std::string line; - if(file.is_open()){ - while(file.good()){ - getline(file, line); - output.append(line + "\n"); + if(file.is_open()){ + while(file.good()){ + getline(file, line); + output.append(line + "\n"); + } } - } - else{ - std::cerr << "Unable to load shader: " << fileName << std::endl; - } - - return output; + else{ + std::cerr << "Unable to load shader: " << fileName << std::endl; + } + + return output; } |