summaryrefslogtreecommitdiff
path: root/shader.cpp
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2010-05-21 19:24:51 +0200
committerVegard Storheil Eriksen <zyp@jvnv.net>2010-05-21 19:24:51 +0200
commit267bebfc227c94f543a39e2aa75fb101bc06932e (patch)
tree40ad8057634ba80aa19c61f57884982fd59f6b56 /shader.cpp
parent88b1e9e505dad78fd2c3ff927495d322b11491ca (diff)
Moved engine-sources to seperate subdirectory.
Diffstat (limited to 'shader.cpp')
-rw-r--r--shader.cpp91
1 files changed, 0 insertions, 91 deletions
diff --git a/shader.cpp b/shader.cpp
deleted file mode 100644
index 04aa031..0000000
--- a/shader.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include <fstream>
-#include "shader.h"
-
-bool GLBaseShader::shader_source(const char *filename) {
- std::ifstream inf(filename, std::ios_base::in);
- if(!inf.is_open()) {
- std::cerr << "Failed to load shader " << filename << std::endl;
- return false;
- }
- inf.seekg(0, std::ios_base::end);
- int length = inf.tellg();
- inf.seekg(0, std::ios_base::beg);
- char *buffer = new char[length];
- inf.read(buffer, length);
- inf.close();
-
- glShaderSource(shader, 1, (const GLchar**)&buffer, &length);
- print_check_ogl_error();
- delete[] buffer;
- glCompileShader(shader);
- print_check_ogl_error();
- int p;
- glGetShaderiv(shader, GL_COMPILE_STATUS, &p);
- if(p == 0) {
- std::cerr << "Failed to compile shader:" << std::endl;
- char log[0xffff];
- int size;
- glGetShaderInfoLog(shader, 0xffff, &size, (GLchar*)&log);
- std::cerr << log << std::endl;
- }
- return shader;
-}
-
-bool GLBaseShader::shader_source(std::string& filename) {
- return shader_source(filename.c_str());
-}
-
-GLBaseShader::GLBaseShader(GLenum type) {
- shader = glCreateShader(type);
-}
-
-GLShaderProgram::GLShaderProgram() {
- program = glCreateProgram();
-}
-
-bool GLShaderProgram::attach(GLBaseShader& shader) {
- glAttachShader(program, shader.shader);
- return !print_check_ogl_error();
-}
-
-bool GLShaderProgram::detach(GLBaseShader& shader) {
- glDetachShader(program, shader.shader);
- return !print_check_ogl_error();
-}
-
-bool GLShaderProgram::link() {
- glLinkProgram(program);
- bool error = print_check_ogl_error();
- int p;
- glGetProgramiv(program, GL_LINK_STATUS, &p);
- if(p == 0) {
- std::cerr << "Failed to link program:" << std::endl;
- char log[0xffff];
- int size;
- glGetProgramInfoLog(program, 0xffff, &size, (GLchar*)&log);
- printf(log);
- }
- return !error && p;
-}
-
-bool GLShaderProgram::use() {
- if(!glIsProgram(program)) program = glCreateProgram();
- glUseProgram(program);
- return !print_check_ogl_error();
-}
-
-void GLShaderProgram::remove() {
- glDeleteProgram(program);
-}
-
-void print_ogl_error(GLenum error) {
- unsigned char *buf = (unsigned char*)gluErrorString(error);
- std::cerr << "OpenGL: " << buf << std::endl;
-}
-
-bool print_check_ogl_error() {
- GLenum error = glGetError();
- if(error != GL_NO_ERROR)
- print_ogl_error(error);
- return error != GL_NO_ERROR;
-}