0022627: Change OCCT memory management defaults
[occt.git] / src / OpenGl / OpenGl_PrimitiveArray.hxx
CommitLineData
2166f0fa
SK
1// File: OpenGl_PrimitiveArray.hxx
2// Created: 13 July 2011
3// Author: Sergey ZERCHANINOV
4// Copyright: OPEN CASCADE 2011
5
6#ifndef OpenGl_PrimitiveArray_Header
7#define OpenGl_PrimitiveArray_Header
8
5f8b738e 9#include <OpenGl_GlCore11.hxx>
2166f0fa
SK
10
11#include <InterfaceGraphic_telem.hxx>
12#include <Aspect_InteriorStyle.hxx>
13
14#include <OpenGl_Element.hxx>
15
16struct OPENGL_SURF_PROP;
5f8b738e 17class Handle(OpenGl_Context);
2166f0fa
SK
18
19class OpenGl_PrimitiveArray : public OpenGl_Element
20{
21public:
22
23 //! Default constructor
24 OpenGl_PrimitiveArray (CALL_DEF_PARRAY* thePArray);
25
26 //! Destructor
27 virtual ~OpenGl_PrimitiveArray();
28
29 //! Render primitives to the window
30 virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
31
32 CALL_DEF_PARRAY* PArray() const { return myPArray; }
33
34private:
35
36 //! VBO initialization procedures
37 Standard_Boolean BuildVBO (const Handle(OpenGl_Workspace)& theWorkspace) const;
38 void clearMemoryOwn() const;
39 void clearMemoryGL (const Handle(OpenGl_Context)& theGlContext) const;
40 Standard_Boolean checkSizeForGraphicMemory (const Handle(OpenGl_Context)& theGlContext) const;
41
42 //! Main procedure to draw array
43 void DrawArray (Tint theLightingModel,
44 const Aspect_InteriorStyle theInteriorStyle,
45 Tint theEdgeFlag,
46 const TEL_COLOUR* theInteriorColour,
47 const TEL_COLOUR* theLineColour,
48 const TEL_COLOUR* theEdgeColour,
49 const OPENGL_SURF_PROP* theFaceProp,
50 const Handle(OpenGl_Workspace)& theWorkspace) const;
51
52 //! Auxiliary procedures
53 void DrawEdges (const TEL_COLOUR* theEdgeColour,
54 const Handle(OpenGl_Workspace)& theWorkspace) const;
55
56 void DrawDegeneratesAsPoints (const TEL_COLOUR* theEdgeColour,
57 const float theSkipRatio) const;
58 void DrawDegeneratesAsLines (const TEL_COLOUR* theEdgeColour,
59 const Handle(OpenGl_Workspace)& theWorkspace) const;
60 void DrawDegeneratesAsBBoxs (const TEL_COLOUR* theEdgeColour) const;
61
62 void DrawDegeneratesPointsAsPoints() const;
63 void DrawDegeneratesLinesAsPoints() const;
64 void DrawDegeneratesLinesAsLines (const float theSkipRatio) const;
65 void DrawDegeneratesTrianglesAsPoints() const;
66 void DrawDegeneratesTrianglesAsLines (const float theSkipRatio) const;
67 void DrawDegeneratesTrianglestripsAsPoints() const;
68 void DrawDegeneratesTrianglestripsAsLines (const float theSkipRatio) const;
69 void DrawDegeneratesQuadranglesAsPoints() const;
70 void DrawDegeneratesQuadranglesAsLines (const float theSkipRatio) const;
71 void DrawDegeneratesQuadranglestripsAsPoints() const;
72 void DrawDegeneratesQuadranglestripsAsLines (const float theSkipRatio) const;
73 void DrawDegeneratesPolygonsAsPoints() const;
74 void DrawDegeneratesPolygonsAsLines (const float theSkipRatio) const;
75
76protected:
77
78 mutable CALL_DEF_PARRAY* myPArray;
79 GLenum myDrawMode;
80
81public:
82
1c35b92f 83 DEFINE_STANDARD_ALLOC
2166f0fa
SK
84
85};
86
87#endif //OpenGl_PrimitiveArray_Header