polly-b-gone/shader.h
2012-12-14 09:47:48 -08:00

49 lines
815 B
C++

// -*- C++ -*-
#ifndef _SHADER_H
#define _SHADER_H
#include <OpenGL/gl.h>
namespace mbostock {
class Model;
class Shader {
public:
virtual ~Shader() {};
virtual void initialize() {}
virtual void display(Model& model) = 0;
};
class GlslShader : public Shader {
public:
GlslShader(const char* vertexPath, const char* fragmentPath);
virtual ~GlslShader();
virtual void initialize();
virtual void display(Model& model);
private:
void attach(const char* path, GLenum shaderType);
void link();
const char* vertexPath_;
const char* fragmentPath_;
GLuint program_;
};
class Shaders {
public:
static Shader* defaultShader();
static Shader* normalShader();
static Shader* wireframeShader();
private:
Shaders();
};
}
#endif