X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=flavors%2Fgl%2Fsource%2Fglstate.h;h=e829103c7556884344bf2d80d9b6e0c99492c309;hb=90368e53a94c6fa68cb678a1a03a9da7bf0c7dd8;hp=86cc5386ae02acbd973fab7b4743c16e3c928672;hpb=f53057ce9b5eb3c7256a4aca95b4944733e14503;p=gldbg.git diff --git a/flavors/gl/source/glstate.h b/flavors/gl/source/glstate.h index 86cc538..e829103 100644 --- a/flavors/gl/source/glstate.h +++ b/flavors/gl/source/glstate.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of gldbg -Copyright © 2009-2010 Mikko Rasa, Mikkosoft Productions -Distributed under the GPL -*/ - #ifndef GLSTATE_H_ #define GLSTATE_H_ @@ -13,6 +6,7 @@ Distributed under the GPL #include "arraystate.h" #include "bufferstate.h" #include "gldecoder.h" +#include "programstate.h" #include "texturestate.h" struct Vector3 @@ -44,6 +38,8 @@ class GlState public: typedef std::map TextureMap; typedef std::map BufferMap; + typedef std::map ShaderMap; + typedef std::map ProgramMap; private: GlDecoder *decoder; @@ -57,11 +53,15 @@ private: BufferMap buffers; BufferState *array_buffer; BufferState *element_buffer; + BufferState *uniform_buffer; + std::vector uniform_bind_points; ArrayState vertex_array; ArrayState normal_array; ArrayState color_array; ArrayState texcoord_arrays[8]; std::map attrib_arrays; + ShaderMap shaders; + ProgramMap programs; public: GlState(); @@ -77,15 +77,27 @@ public: const BufferMap &get_buffers() const { return buffers; } const BufferState &get_buffer(unsigned) const; const BufferState *get_current_buffer(GLenum) const; + const BufferBindingState &get_buffer_binding(GLenum, unsigned) const; 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); + BufferState *get_buffer_object(unsigned); BufferState *get_current_buffer(GLenum); + BufferBindingState *get_buffer_binding(GLenum, unsigned); 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); @@ -113,12 +125,33 @@ private: 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 glVertexAttribPointer(void *, unsigned, int, GLenum, unsigned char, int, const void *); static void glBindBuffer(void *, GLenum, unsigned); + static void glBindBufferBase(void *, GLenum, unsigned, unsigned); + static void glBindBufferRange(void *, GLenum, unsigned, unsigned, int, int); 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 *); + + 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