0022650: Exception in Primitive Array during Redisplay of Presentable Object
[occt.git] / src / OpenGl / OpenGl_GraphicDriver_713.cxx
CommitLineData
7fd59977 1// File OpenGl_GraphicDriver_713.cxx
2// Created 22-10-01
3// Author SAV
4
5// SAV 09/07/02 merged with OpenGl_GraphicDriver_713.cxx created 16/06/2000 by ATS,SPK,GG : G005
6// implementation of PARRAY method
7
8#include <OpenGl_GraphicDriver.jxx>
9
10#include <Aspect_DriverDefinitionError.hxx>
11
12
13#include <OpenGl_tgl_funcs.hxx>
14#include <OpenGl_telem_util.hxx>
15
16
17#define BUC61044 /* 25/10/01 SAV ; added functionality to control gl depth testing
18from higher API */
19#define BUC61045 /* 25/10/01 SAV ; added functionality to control gl lighting
20from higher API */
21
22
23void OpenGl_GraphicDriver::SetDepthTestEnabled( const Graphic3d_CView& view,
24 const Standard_Boolean isEnabled ) const
25{
26
27#ifdef BUC61044
28 Graphic3d_CView MyCView = view;
29 call_togl_depthtest( &MyCView, isEnabled );
30#endif
31
32}
33
34Standard_Boolean OpenGl_GraphicDriver
35::IsDepthTestEnabled( const Graphic3d_CView& view ) const
36{
37#ifdef BUC61044
38 Graphic3d_CView MyCView = view;
98178592 39 return call_togl_isdepthtest (&MyCView) != 0;
7fd59977 40#endif
41}
42
43void OpenGl_GraphicDriver::ReadDepths( const Graphic3d_CView& view,
44 const Standard_Integer x,
45 const Standard_Integer y,
46 const Standard_Integer width,
47 const Standard_Integer height,
48 const Standard_Address buffer ) const
49{
50 TelReadDepths (view.WsId, x, y, width, height, (float*) buffer);
51}
52
53void OpenGl_GraphicDriver::SetGLLightEnabled( const Graphic3d_CView& view,
54 const Standard_Boolean isEnabled ) const
55{
56#ifdef BUC61045
57 Graphic3d_CView MyCView = view;
58 call_togl_gllight( &MyCView, isEnabled );
59#endif
60}
61
62Standard_Boolean OpenGl_GraphicDriver
63::IsGLLightEnabled( const Graphic3d_CView& view ) const
64{
65#ifdef BUC61045
66 Graphic3d_CView MyCView = view;
98178592 67 return call_togl_isgllight (&MyCView) != 0;
7fd59977 68#endif
69}
70
71void OpenGl_GraphicDriver :: PrimitiveArray( const Graphic3d_CGroup& ACGroup,
72 const Graphic3d_PrimitiveArray& parray,
73 const Standard_Boolean EvalMinMax )
74{
75 Graphic3d_CGroup MyCGroup = ACGroup;
76
77 if( parray ) call_togl_parray (&MyCGroup,parray);
78}
79
98178592
A
80//=======================================================================
81//function : RemovePrimitiveArray
82//purpose : Purpose: Clear visualization data in graphical driver and
83// stop displaying the primitives array of the graphical group
84// <theCGroup>. This method is internal and should be used by
85// Graphic3d_Group only.
86//=======================================================================
87
88void OpenGl_GraphicDriver::RemovePrimitiveArray (const Graphic3d_CGroup& theCGroup,
89 const Graphic3d_PrimitiveArray& thePArray)
90{
91 Graphic3d_CGroup MyCGroup = theCGroup;
92 if (thePArray != NULL) call_togl_parray_remove (&MyCGroup, thePArray);
93}
7fd59977 94
95void OpenGl_GraphicDriver :: UserDraw ( const Graphic3d_CGroup& ACGroup,
96 const Graphic3d_CUserDraw& AUserDraw )
97{
98 Graphic3d_CGroup MyCGroup = ACGroup;
99 Graphic3d_CUserDraw MyUserDraw = AUserDraw;
100
101 call_togl_userdraw (&MyCGroup,&MyUserDraw);
102}
103
104extern int VBOenabled;
105
106void OpenGl_GraphicDriver :: EnableVBO( const Standard_Boolean flag )
107{
108 VBOenabled = flag;
109}