/* $Id$
This file is part of gldbg
-Copyright © 2009 Mikko Rasa, Mikkosoft Productions
+Copyright © 2009-2010 Mikko Rasa, Mikkosoft Productions
Distributed under the GPL
*/
#include <map>
#include <vector>
+#include "arraystate.h"
#include "bufferstate.h"
#include "gldecoder.h"
#include "texturestate.h"
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();
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);
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