+
+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;
+
+private:
+ void set_current_texture(GLenum, unsigned);
+ TextureState *get_current_texture(GLenum);
+
+ static void glActiveTexture(void *, unsigned);
+ static void glBindTexture(void *, GLenum, unsigned);
+ static void glTexImage1D(void *, GLenum, int, int, int, int, GLenum, GLenum, const void *);
+ static void glTexImage2D(void *, GLenum, int, int, int, int, int, GLenum, GLenum, const void *);
+ static void glTexImage3D(void *, GLenum, int, int, int, int, int, int, GLenum, GLenum, const void *);
+ static void glTexParameteri(void *, GLenum, GLenum, int);
+ static void glTexParameteriv(void *, GLenum, GLenum, const int *);
+ static void glDeleteTextures(void *, int, const unsigned *);
+
+public:
+ const TextureMap &get_textures() const { return textures; }
+ const TextureState &get_texture(unsigned) const;
+ const TexUnitState &get_texture_unit(unsigned i) const { return texunits[i]; }
+
+private:
+ ShaderState *get_shader(unsigned, bool);
+ void delete_shader(unsigned);
+ ProgramState *get_program(unsigned, bool);
+ void delete_program(unsigned);
+
+ 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 *);
+
+public:
+ 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;