]> git.tdb.fi Git - gldbg.git/blob - flavors/gl/source/bufferstate.h
18013a77dfb29445ee20271ada9543eaa6ca42f0
[gldbg.git] / flavors / gl / source / bufferstate.h
1 #ifndef BUFFERSTATE_H_
2 #define BUFFERSTATE_H_
3
4 #include <string>
5 #include <vector>
6 #include "autoconstptr.h"
7 #include "opengl.h"
8
9 struct ArrayState;
10
11 struct BufferContent
12 {
13         struct Array
14         {
15                 GLenum kind;
16                 unsigned index;
17                 unsigned size;
18                 GLenum type;
19                 int offset;
20
21                 Array();
22                 Array(const ArrayState &);
23         };
24
25         bool consistent;
26         unsigned stride;
27         std::vector<Array> arrays;
28
29         BufferContent();
30         void update(const ArrayState &);
31         void update_elements(GLenum);
32         std::string describe() const;
33 };
34
35 struct BufferState
36 {
37         unsigned id;
38         GLenum target;
39         GLenum usage;
40         unsigned size;
41         char *data;
42         BufferContent content;
43
44         BufferState();
45         void set_data(unsigned, const void *, GLenum);
46         void set_sub_data(unsigned, unsigned, const void *);
47         std::string describe() const;
48 };
49
50 struct BufferBindingState
51 {
52         AutoConstPtr<BufferState> buffer;
53         unsigned offset;
54         unsigned size;
55
56         BufferBindingState();
57 };
58
59 #endif