From bf8ee88cd294f2c1feaa1897be8c501c19901c98 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 7 Sep 2012 23:27:15 -0400 Subject: [PATCH] create a GLProgram for object shader --- src/client/Client.cc | 17 +++++++++++++++++ src/client/Client.h | 2 ++ src/client/GL/GLShader.cc | 12 +++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index ccb94a6..7edcaff 100755 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -7,6 +7,7 @@ #include "Client.h" #include #include +#include "ccfs.h" using namespace std; @@ -35,6 +36,22 @@ Client::Client(bool fullscreen, bool compatibility_context, m_player->x = 1250; m_player->y = 1000; m_player->direction = M_PI_2; + GLProgram::AttributeBinding obj_attrib_bindings[] = { + {0, "pos"}, + {1, "normal"}, + {0, NULL} + }; + const char *v_source = (const char *) CFS.get_file("shaders/obj_v.glsl", NULL); + const char *f_source = (const char *) CFS.get_file("shaders/obj_f.glsl", NULL); + if (v_source == NULL || f_source == NULL) + { + cerr << "Error loading shader sources" << endl; + } + else if (!m_obj_program.create(v_source, f_source, + obj_attrib_bindings)) + { + cerr << "Error creating obj program" << endl; + } } void Client::run() diff --git a/src/client/Client.h b/src/client/Client.h index f1c4c07..40d813f 100755 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -6,6 +6,7 @@ #include "refptr.h" #include "Map.h" #include "Player.h" +#include "GLProgram.h" class Client { @@ -25,6 +26,7 @@ class Client refptr m_player; int m_width; int m_height; + GLProgram m_obj_program; }; #endif diff --git a/src/client/GL/GLShader.cc b/src/client/GL/GLShader.cc index 081f1e4..d3a8638 100644 --- a/src/client/GL/GLShader.cc +++ b/src/client/GL/GLShader.cc @@ -35,7 +35,17 @@ bool GLShader::create(GLenum shaderType, const char *source) } GLint log_length; - cerr << "Error compiling shader" << endl; + cerr << "Error compiling "; + switch (shaderType) + { + case GL_VERTEX_SHADER: + cerr << "vertex"; + break; + case GL_FRAGMENT_SHADER: + cerr << "fragment"; + break; + } + cerr << " shader" << endl; glGetShaderiv(m_id, GL_INFO_LOG_LENGTH, &log_length); if (log_length > 0) {