-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_SHADER_H_
#define MSP_GL_SHADER_H_
namespace Msp {
namespace GL {
-enum ShaderType
-{
- FRAGMENT_SHADER = GL_FRAGMENT_SHADER,
- VERTEX_SHADER = GL_VERTEX_SHADER
-};
-
class Shader
{
-public:
- Shader(ShaderType t);
- Shader(ShaderType t, const std::string &);
private:
- void init(ShaderType);
+ unsigned id;
+ bool compiled;
+
+protected:
+ Shader(GLenum t);
+ Shader(GLenum t, const std::string &);
+private:
+ void init(GLenum);
public:
- ~Shader();
+ virtual ~Shader();
void source(unsigned count, const char **str, const int *len);
void source(const std::string &str);
void source(const char *str, int len);
void compile();
unsigned get_id() const { return id; }
- bool get_compiled() const { return compiled; }
- int get_param(GLenum param) const;
+ bool is_compiled() const { return compiled; }
std::string get_info_log() const;
-private:
- unsigned id;
- bool compiled;
+};
+
+
+class VertexShader: public Shader
+{
+public:
+ VertexShader();
+ VertexShader(const std::string &);
+};
+
+
+class FragmentShader: public Shader
+{
+public:
+ FragmentShader();
+ FragmentShader(const std::string &);
};
} // namespace GL