Geant4-11
source
visualization
OpenGL
src
G4OpenGLStoredXViewer.cc
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
//
28
//
29
// Andrew Walkden 7th February 1997
30
// Class G4OpenGLStoredXViewer : a class derived from G4OpenGLXViewer and
31
// G4OpenGLStoredViewer.
32
33
#include "
G4OpenGLStoredXViewer.hh
"
34
35
#include "
G4OpenGLStoredSceneHandler.hh
"
36
#include "
G4ios.hh
"
37
#include "
G4Threading.hh
"
38
39
G4OpenGLStoredXViewer::
40
G4OpenGLStoredXViewer
(
G4OpenGLStoredSceneHandler
& sceneHandler,
41
const
G4String
&
name
)
42
:
G4VViewer
(sceneHandler, sceneHandler.IncrementViewCount (),
name
),
43
G4OpenGLViewer
(sceneHandler),
44
G4OpenGLXViewer
(sceneHandler),
45
G4OpenGLStoredViewer
(sceneHandler)
46
{
47
if
(
fViewId
< 0)
return
;
// In case error in base class instantiation.
48
49
if
(!
vi_stored
) {
50
fViewId
= -1;
// This flags an error.
51
G4cerr
<<
"G4OpenGLStoredXViewer::G4OpenGLStoredXViewer -"
52
" G4OpenGLXViewer couldn't get a visual."
<<
G4endl
;
53
return
;
54
}
55
}
56
57
G4OpenGLStoredXViewer::~G4OpenGLStoredXViewer
() {}
58
59
void
G4OpenGLStoredXViewer::Initialise
() {
60
61
#ifdef G4DEBUG_VIS_OGL
62
printf(
"G4OpenGLStoredXViewer::Initialise\n"
);
63
#endif
64
CreateGLXContext
(
vi_stored
);
65
CreateMainWindow
();
66
CreateFontLists
();
67
68
InitializeGLView
();
69
70
glDrawBuffer (GL_BACK);
71
}
72
73
void
G4OpenGLStoredXViewer::DrawView
() {
74
75
#ifdef G4DEBUG_VIS_OGL
76
printf(
"G4OpenGLStoredXViewer::DrawView\n"
);
77
#endif
78
79
G4ViewParameters::DrawingStyle
style =
GetViewParameters
().
GetDrawingStyle
();
80
81
// See if things have changed from last time and remake if necessary...
82
// The fNeedKernelVisit flag might have been set by the user in
83
// /vis/viewer/rebuild, but if not, make decision and set flag only
84
// if necessary...
85
if
(!
fNeedKernelVisit
)
KernelVisitDecision
();
86
fLastVP
=
fVP
;
87
G4bool
kernelVisitWasNeeded =
fNeedKernelVisit
;
// Keep (ProcessView resets).
88
ProcessView
();
89
90
if
(style!=
G4ViewParameters::hlr
&&
haloing_enabled
) {
91
92
HaloingFirstPass
();
93
DrawDisplayLists
();
94
#ifdef G4DEBUG_VIS_OGL
95
printf(
"G4OpenGLStoredXViewer::DrawView flush \n"
);
96
#endif
97
glFlush ();
98
99
HaloingSecondPass
();
100
101
DrawDisplayLists
();
102
103
}
else
{
104
105
if
(!kernelVisitWasNeeded) {
106
#ifdef G4DEBUG_VIS_OGL
107
printf(
"G4OpenGLStoredXViewer::DrawView NO need kernel visit\n"
);
108
#endif
109
DrawDisplayLists
();
110
111
}
else
{
112
113
#ifdef G4DEBUG_VIS_OGL
114
printf(
"G4OpenGLStoredXViewer::DrawView NEED kernel visit\n"
);
115
#endif
116
// However, union cutaways are implemented in DrawDisplayLists, so make
117
// an extra pass...
118
if
(
fVP
.
IsCutaway
() &&
119
fVP
.
GetCutawayMode
() ==
G4ViewParameters::cutawayUnion
) {
120
ClearView
();
121
DrawDisplayLists
();
122
}
else
{
// ADD TO AVOID KernelVisit=1 and nothing to display
123
DrawDisplayLists
();
124
}
125
}
126
}
127
128
FinishView
();
129
130
}
131
132
void
G4OpenGLStoredXViewer::FinishView
() {
133
#ifdef G4DEBUG_VIS_OGL
134
printf(
"G4OpenGLStoredXViewer::FinishView\n"
);
135
#endif
136
137
// glXWaitGL (); //Wait for effects of all previous OpenGL commands to
138
//be propagated before progressing.
139
// JA: Commented out July 2021 - slows rendering down in some cases and I
140
// don't see any adverse effects.
141
142
#ifdef G4DEBUG_VIS_OGL
143
printf(
"G4OpenGLStoredXViewer::FinishView flush \n"
);
144
#endif
145
glFlush ();
//FIXME
146
147
GLint renderMode;
148
glGetIntegerv(GL_RENDER_MODE, &renderMode);
149
if
(renderMode == GL_RENDER) glXSwapBuffers (
dpy
,
win
);
150
}
G4OpenGLStoredSceneHandler.hh
G4OpenGLStoredXViewer.hh
G4Threading.hh
G4bool
bool G4bool
Definition:
G4Types.hh:86
G4ios.hh
G4cerr
G4GLOB_DLL std::ostream G4cerr
G4endl
#define G4endl
Definition:
G4ios.hh:57
G4OpenGLStoredSceneHandler
Definition:
G4OpenGLStoredSceneHandler.hh:43
G4OpenGLStoredViewer
Definition:
G4OpenGLStoredViewer.hh:44
G4OpenGLStoredViewer::fLastVP
G4ViewParameters fLastVP
Definition:
G4OpenGLStoredViewer.hh:64
G4OpenGLStoredViewer::KernelVisitDecision
void KernelVisitDecision()
Definition:
G4OpenGLStoredViewer.cc:56
G4OpenGLStoredViewer::DrawDisplayLists
void DrawDisplayLists()
Definition:
G4OpenGLStoredViewer.cc:147
G4OpenGLStoredXViewer::DrawView
void DrawView()
Definition:
G4OpenGLStoredXViewer.cc:73
G4OpenGLStoredXViewer::G4OpenGLStoredXViewer
G4OpenGLStoredXViewer(G4OpenGLStoredSceneHandler &scene, const G4String &name="")
Definition:
G4OpenGLStoredXViewer.cc:40
G4OpenGLStoredXViewer::Initialise
void Initialise()
Definition:
G4OpenGLStoredXViewer.cc:59
G4OpenGLStoredXViewer::FinishView
void FinishView()
Definition:
G4OpenGLStoredXViewer.cc:132
G4OpenGLStoredXViewer::~G4OpenGLStoredXViewer
virtual ~G4OpenGLStoredXViewer()
Definition:
G4OpenGLStoredXViewer.cc:57
G4OpenGLViewer
Definition:
G4OpenGLViewer.hh:98
G4OpenGLViewer::haloing_enabled
G4bool haloing_enabled
Definition:
G4OpenGLViewer.hh:202
G4OpenGLViewer::InitializeGLView
void InitializeGLView()
Definition:
G4OpenGLViewer.cc:127
G4OpenGLViewer::ClearView
void ClearView()
Definition:
G4OpenGLViewer.cc:203
G4OpenGLViewer::HaloingSecondPass
void HaloingSecondPass()
Definition:
G4OpenGLViewer.cc:463
G4OpenGLViewer::HaloingFirstPass
void HaloingFirstPass()
Definition:
G4OpenGLViewer.cc:441
G4OpenGLXViewer
Definition:
G4OpenGLXViewer.hh:47
G4OpenGLXViewer::win
GLXDrawable win
Definition:
G4OpenGLXViewer.hh:83
G4OpenGLXViewer::CreateGLXContext
void CreateGLXContext(XVisualInfo *vi)
Definition:
G4OpenGLXViewer.cc:172
G4OpenGLXViewer::CreateFontLists
virtual void CreateFontLists()
Definition:
G4OpenGLXViewer.cc:356
G4OpenGLXViewer::vi_stored
XVisualInfo * vi_stored
Definition:
G4OpenGLXViewer.hh:79
G4OpenGLXViewer::CreateMainWindow
virtual void CreateMainWindow()
Definition:
G4OpenGLXViewer.cc:261
G4OpenGLXViewer::dpy
Display * dpy
Definition:
G4OpenGLXViewer.hh:75
G4String
Definition:
G4String.hh:62
G4VViewer
Definition:
G4VViewer.hh:45
G4VViewer::fNeedKernelVisit
G4bool fNeedKernelVisit
Definition:
G4VViewer.hh:224
G4VViewer::GetViewParameters
const G4ViewParameters & GetViewParameters() const
G4VViewer::ProcessView
void ProcessView()
Definition:
G4VViewer.cc:105
G4VViewer::fViewId
G4int fViewId
Definition:
G4VViewer.hh:216
G4VViewer::fVP
G4ViewParameters fVP
Definition:
G4VViewer.hh:219
G4ViewParameters::GetCutawayMode
CutawayMode GetCutawayMode() const
G4ViewParameters::IsCutaway
G4bool IsCutaway() const
G4ViewParameters::DrawingStyle
DrawingStyle
Definition:
G4ViewParameters.hh:94
G4ViewParameters::hlr
@ hlr
Definition:
G4ViewParameters.hh:96
G4ViewParameters::cutawayUnion
@ cutawayUnion
Definition:
G4ViewParameters.hh:103
G4ViewParameters::GetDrawingStyle
DrawingStyle GetDrawingStyle() const
G4InuclParticleNames::name
const char * name(G4int ptype)
Definition:
G4InuclParticleNames.hh:76
Generated by
1.9.3