1 // File: OpenGl_PrimitiveArray.hxx
2 // Created: 13 July 2011
3 // Author: Sergey ZERCHANINOV
4 // Copyright: OPEN CASCADE 2011
6 #ifndef OpenGl_PrimitiveArray_Header
7 #define OpenGl_PrimitiveArray_Header
9 #include <OpenGl_GlCore11.hxx>
11 #include <InterfaceGraphic_telem.hxx>
12 #include <Aspect_InteriorStyle.hxx>
14 #include <OpenGl_Element.hxx>
16 struct OPENGL_SURF_PROP;
17 class Handle(OpenGl_Context);
19 class OpenGl_PrimitiveArray : public OpenGl_Element
23 //! Default constructor
24 OpenGl_PrimitiveArray (CALL_DEF_PARRAY* thePArray);
27 virtual ~OpenGl_PrimitiveArray();
29 //! Render primitives to the window
30 virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const;
32 CALL_DEF_PARRAY* PArray() const { return myPArray; }
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;
42 //! Main procedure to draw array
43 void DrawArray (Tint theLightingModel,
44 const Aspect_InteriorStyle theInteriorStyle,
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;
52 //! Auxiliary procedures
53 void DrawEdges (const TEL_COLOUR* theEdgeColour,
54 const Handle(OpenGl_Workspace)& theWorkspace) const;
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;
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;
78 mutable CALL_DEF_PARRAY* myPArray;
87 #endif //OpenGl_PrimitiveArray_Header