Commit | Line | Data |
---|---|---|
2166f0fa SK |
1 | // File: OpenGl_TriangleStrip.hxx |
2 | // Created: 13 July 2011 | |
3 | // Author: Sergey ZERCHANINOV | |
4 | // Copyright: OPEN CASCADE 2011 | |
5 | ||
6 | #ifndef OpenGl_TriangleStrip_Header | |
7 | #define OpenGl_TriangleStrip_Header | |
8 | ||
9 | #include <InterfaceGraphic_telem.hxx> | |
10 | #include <Graphic3d_Array1OfVertex.hxx> | |
11 | #include <Graphic3d_Array1OfVertexN.hxx> | |
12 | #include <Graphic3d_Array1OfVertexNT.hxx> | |
13 | #include <Aspect_InteriorStyle.hxx> | |
14 | ||
15 | #include <OpenGl_Element.hxx> | |
16 | ||
17 | struct TEL_TMESH_DATA | |
18 | { | |
19 | Tint num_facets; /* Number of facets */ | |
20 | Tint facet_flag; /* TEL_FA_NONE or TEL_FA_NORMAL */ | |
21 | Tint vertex_flag;/* TEL_VT_NONE or TEL_VT_NORMAL */ | |
22 | tel_point fnormals; /* length = num_facets */ | |
23 | tel_colour fcolours; /* length = num_facets */ | |
24 | tel_point vertices; /* length = num_facets + 2 */ | |
25 | tel_colour vcolours; /* length = num_facets + 2 */ | |
26 | tel_point vnormals; /* length = num_facets + 2 */ | |
27 | tel_texture_coord vtexturecoord; /* Texture coordinates */ | |
1c35b92f | 28 | DEFINE_STANDARD_ALLOC |
2166f0fa SK |
29 | }; |
30 | ||
31 | class OpenGl_TriangleStrip : public OpenGl_Element | |
32 | { | |
33 | public: | |
34 | ||
35 | OpenGl_TriangleStrip (const Graphic3d_Array1OfVertex& AListVertex); | |
36 | OpenGl_TriangleStrip (const Graphic3d_Array1OfVertexN& AListVertex); | |
37 | OpenGl_TriangleStrip (const Graphic3d_Array1OfVertexNT& AListVertex); | |
38 | virtual ~OpenGl_TriangleStrip (); | |
39 | ||
40 | virtual void Render (const Handle(OpenGl_Workspace) &AWorkspace) const; | |
41 | ||
42 | protected: | |
43 | ||
44 | void Init (const Tint ANbFacets, tel_point AVertices, | |
45 | tel_point AVNormals, tel_colour AVColors, tel_texture_coord ATCoords, | |
46 | tel_point AFNormals, tel_colour AFColors); | |
47 | ||
48 | void draw_tmesh (const Tint, /* front_lighting_model, */ | |
49 | const Aspect_InteriorStyle, /* interior_style */ | |
50 | const TEL_COLOUR *, /* edge_colour */ | |
51 | const Handle(OpenGl_Workspace) &) const; | |
52 | ||
53 | void draw_edges (const TEL_COLOUR *, const Aspect_InteriorStyle, Tint, const Handle(OpenGl_Workspace) &) const; | |
54 | ||
55 | void draw_line_loop () const; | |
56 | ||
57 | TEL_TMESH_DATA myData; | |
58 | DS_INTERNAL *myDS; | |
59 | ||
60 | public: | |
1c35b92f | 61 | DEFINE_STANDARD_ALLOC |
2166f0fa SK |
62 | }; |
63 | ||
64 | #endif //OpenGl_TriangleStrip_Header |