svn merge -r 15392:15551 https://svn.blender.org/svnroot/bf-blender/trunk/blender
[blender.git] / source / gameengine / Rasterizer / RAS_OpenGLRasterizer / RAS_ListRasterizer.h
1 #ifndef __RAS_LISTRASTERIZER_H__
2 #define __RAS_LISTRASTERIZER_H__
3
4 #include "RAS_MaterialBucket.h"
5 #include "RAS_VAOpenGLRasterizer.h"
6 #include <vector>
7
8 class RAS_ListRasterizer;
9 class RAS_ListSlot : public KX_ListSlot
10 {
11         unsigned int m_list;
12         unsigned int m_flag;
13         RAS_ListRasterizer* m_rasty;
14 public:
15         RAS_ListSlot(RAS_ListRasterizer* rasty);
16         virtual ~RAS_ListSlot();
17         virtual void SetModified(bool mod);
18         virtual int Release();
19
20         void RemoveList();
21         void DrawList();
22         void EndList();
23         bool End();
24
25 };
26
27 enum RAS_ListSlotFlags  {
28         LIST_CREATE             =1,
29         LIST_MODIFY             =2,
30         LIST_STREAM             =4,
31         LIST_NOCREATE   =8,
32         LIST_BEGIN              =16,
33         LIST_END                =32,
34         LIST_REGEN              =64
35 };
36
37 typedef std::map<const vecVertexArray, RAS_ListSlot*> RAS_Lists;
38
39 class RAS_ListRasterizer : public RAS_VAOpenGLRasterizer
40 {
41         bool mUseVertexArrays;
42         RAS_Lists mLists;
43
44         RAS_ListSlot* FindOrAdd(const vecVertexArray& vertexarrays, KX_ListSlot** slot);
45         void ReleaseAlloc();
46
47 public:
48         void RemoveListSlot(RAS_ListSlot* list);
49         RAS_ListRasterizer(RAS_ICanvas* canvas, bool useVertexArrays=false, bool lock=false);
50         virtual ~RAS_ListRasterizer();
51
52         virtual void IndexPrimitives(
53                         const vecVertexArray& vertexarrays,
54                         const vecIndexArrays & indexarrays,
55                         DrawMode mode,
56                         bool useObjectColor,
57                         const MT_Vector4& rgbacolor,
58                         class KX_ListSlot** slot
59         );
60
61         virtual void IndexPrimitivesMulti(
62                         const vecVertexArray& vertexarrays,
63                         const vecIndexArrays & indexarrays,
64                         DrawMode mode,
65                         bool useObjectColor,
66                         const MT_Vector4& rgbacolor,
67                         class KX_ListSlot** slot
68         );
69
70         virtual bool    Init();
71         virtual void    Exit();
72
73         virtual void    SetDrawingMode(int drawingmode);
74
75         virtual bool    QueryLists(){return true;}
76 };
77
78 #endif