]> git.tdb.fi Git - gldbg.git/blobdiff - flavors/gl/source/glstate.h
Basic tracking and inspection of shaders and programs
[gldbg.git] / flavors / gl / source / glstate.h
index e6a3d9812f556f6b351799da28625e8978620402..e829103c7556884344bf2d80d9b6e0c99492c309 100644 (file)
@@ -6,6 +6,7 @@
 #include "arraystate.h"
 #include "bufferstate.h"
 #include "gldecoder.h"
+#include "programstate.h"
 #include "texturestate.h"
 
 struct Vector3
@@ -37,6 +38,8 @@ class GlState
 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;
@@ -57,6 +60,8 @@ private:
        ArrayState color_array;
        ArrayState texcoord_arrays[8];
        std::map<unsigned, ArrayState> attrib_arrays;
+       ShaderMap shaders;
+       ProgramMap programs;
 
 public:
        GlState();
@@ -76,6 +81,10 @@ public:
        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);
@@ -85,6 +94,10 @@ private:
        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);
@@ -123,6 +136,22 @@ private:
 
        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