#include "arraystate.h"
#include "bufferstate.h"
#include "gldecoder.h"
+#include "programstate.h"
#include "texturestate.h"
struct Vector3
public:
typedef std::map<unsigned, TextureState> TextureMap;
typedef std::map<unsigned, BufferState> BufferMap;
+ typedef std::map<unsigned, ShaderState> ShaderMap;
+ typedef std::map<unsigned, ProgramState> ProgramMap;
private:
GlDecoder *decoder;
ArrayState color_array;
ArrayState texcoord_arrays[8];
std::map<unsigned, ArrayState> attrib_arrays;
+ ShaderMap shaders;
+ ProgramMap programs;
public:
GlState();
const ArrayState &get_array(GLenum) const;
const ArrayState &get_texture_coord_array(unsigned) const;
const ArrayState &get_attrib_array(unsigned) const;
+ const ShaderMap &get_shaders() const { return shaders; }
+ const ShaderState &get_shader(unsigned) const;
+ const ProgramMap &get_programs() const { return programs; }
+ const ProgramState &get_program(unsigned) const;
private:
bool &get_boolean_state(GLenum);
TextureState *get_current_texture(GLenum);
void set_current_texture(GLenum, unsigned);
void set_current_buffer(GLenum, unsigned);
ArrayState &get_attrib_array(unsigned);
+ ShaderState *get_shader(unsigned, bool);
+ void delete_shader(unsigned);
+ ProgramState *get_program(unsigned, bool);
+ void delete_program(unsigned);
static void glEnableClientState(void *, GLenum);
static void glDisableClientState(void *, GLenum);
static void glDrawElements(void *, GLenum, int, GLenum, const void *);
static void glDrawRangeElements(void *, GLenum, unsigned, unsigned, int, GLenum, const void *);
+
+ static void glCreateShader(void *, unsigned, GLenum);
+ static void glShaderSource(void *, unsigned, int, const char **, const int *);
+ static void glCompileShader(void *, unsigned);
+ static void glGetShaderiv(void *, unsigned, GLenum, int *);
+ static void glGetShaderInfoLog(void *, unsigned, int, int *, char *);
+ static void glDeleteShader(void *, unsigned);
+ static void glCreateProgram(void *, unsigned);
+ static void glAttachShader(void *, unsigned, unsigned);
+ static void glLinkProgram(void *, unsigned);
+ static void glGetProgramiv(void *, unsigned, GLenum, int *);
+ static void glGetProgramInfoLog(void *, unsigned, int, int *, char *);
+ static void glDeleteProgram(void *, unsigned);
+ static void glDeleteObjectARB(void *, unsigned);
+ static void glGetObjectParameterivARB(void *, unsigned, GLenum, int *);
+ static void glGetInfoLogARB(void *, unsigned, int, int *, char *);
};
#endif