]> git.tdb.fi Git - gldbg.git/blobdiff - source/glstate.h
Track vertex array state
[gldbg.git] / source / glstate.h
index b21034d8b037be51cecb7e2ab45bf545025aa19c..86cc5386ae02acbd973fab7b4743c16e3c928672 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of gldbg
-Copyright © 2009  Mikko Rasa, Mikkosoft Productions
+Copyright © 2009-2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the GPL
 */
 
@@ -10,6 +10,7 @@ Distributed under the GPL
 
 #include <map>
 #include <vector>
+#include "arraystate.h"
 #include "bufferstate.h"
 #include "gldecoder.h"
 #include "texturestate.h"
@@ -50,11 +51,17 @@ private:
        Vector4 texcoord[8];
        Vector3 normal;
        unsigned active_tex;
+       unsigned client_active_tex;
        TextureMap textures;
        TexUnitState texunits[8];
        BufferMap buffers;
        BufferState *array_buffer;
        BufferState *element_buffer;
+       ArrayState vertex_array;
+       ArrayState normal_array;
+       ArrayState color_array;
+       ArrayState texcoord_arrays[8];
+       std::map<unsigned, ArrayState> attrib_arrays;
 
 public:
        GlState();
@@ -70,12 +77,21 @@ public:
        const BufferMap &get_buffers() const { return buffers; }
        const BufferState &get_buffer(unsigned) const;
        const BufferState *get_current_buffer(GLenum) const;
+       const ArrayState &get_array(GLenum) const;
+       const ArrayState &get_texture_coord_array(unsigned) const;
+       const ArrayState &get_attrib_array(unsigned) const;
 private:
+       bool &get_boolean_state(GLenum);
        TextureState *get_current_texture(GLenum);
        BufferState *get_current_buffer(GLenum);
        void set_current_texture(GLenum, unsigned);
        void set_current_buffer(GLenum, unsigned);
 
+       static void glEnableClientState(void *, GLenum);
+       static void glDisableClientState(void *, GLenum);
+       static void glEnableVertexAttribArray(void *, unsigned);
+       static void glDisableVertexAttribArray(void *, unsigned);
+
        static void glColor3f(void *, float, float, float);
        static void glColor4f(void *, float, float, float, float);
        static void glNormal3f(void *, float, float, float);
@@ -92,9 +108,17 @@ private:
        static void glTexParameteriv(void *, GLenum, GLenum, const int *);
        static void glDeleteTextures(void *, int, const unsigned *);
 
+       static void glVertexPointer(void *, int, GLenum, int, const void *);
+       static void glNormalPointer(void *, GLenum, int, const void *);
+       static void glColorPointer(void *, int, GLenum, int, const void *);
+       static void glClientActiveTexture(void *, unsigned);
+       static void glTexCoordPointer(void *, int, GLenum, int, const void *);
+       static void glVertexAttribPointer(void *, unsigned, int, GLenum, int, int, const void *);
+
        static void glBindBuffer(void *, GLenum, unsigned);
        static void glBufferData(void *, GLenum, int, const void *, GLenum);
        static void glBufferSubData(void *, GLenum, int, int, const void *);
+       static void glDeleteBuffers(void *, int, const unsigned *);
 };
 
 #endif