X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=flavors%2Fgl%2Fsource%2Fglstate.h;h=e829103c7556884344bf2d80d9b6e0c99492c309;hb=90368e53a94c6fa68cb678a1a03a9da7bf0c7dd8;hp=7f15b0157489986f87f0b1213c642d5096b713d9;hpb=a832996c884a0e0acc9a38ba4dd258edb75ec7af;p=gldbg.git diff --git a/flavors/gl/source/glstate.h b/flavors/gl/source/glstate.h index 7f15b01..e829103 100644 --- a/flavors/gl/source/glstate.h +++ b/flavors/gl/source/glstate.h @@ -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 TextureMap; typedef std::map BufferMap; + typedef std::map ShaderMap; + typedef std::map ProgramMap; private: GlDecoder *decoder; @@ -50,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(); @@ -70,16 +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); @@ -110,12 +128,30 @@ private: 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