Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4OpenGLStoredXmViewer.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 10th February 1997
30// Class G4OpenGLStoredXmViewer : a class derived from G4OpenGLXmViewer
31// and G4OpenGLStoredViewer.
32
34
36#include "G4ios.hh"
37#include "G4Threading.hh"
38
41 const G4String& name)
42 : G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
43 G4OpenGLViewer (sceneHandler),
44 G4OpenGLXmViewer (sceneHandler),
45 G4OpenGLStoredViewer (sceneHandler)
46{
47
48 if (fViewId < 0) return; // In case error in base class instantiation.
49
50 if (!vi_stored) {
51 fViewId = -1; // This flags an error.
52 G4cerr << "G4OpenGLStoredXmViewer::G4OpenGLStoredXmViewer -"
53 " G4OpenGLXmViewer couldn't get a visual." << G4endl;
54 return;
55 }
56}
57
59{}
60
62
66
68
69 glDrawBuffer (GL_BACK);
70}
71
73#ifdef G4DEBUG_VIS_OGL
74 printf("G4OpenGLStoredXmViewer::DrawView \n");
75#endif
76
78
79 //See if things have changed from last time and remake if necessary...
80 // /vis/viewer/rebuild, but if not, make decision and set flag only
81 // if necessary...
83 fLastVP = fVP;
84 G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
85 ProcessView ();
86
87 if(style!=G4ViewParameters::hlr &&
89
92#ifdef G4DEBUG_VIS_OGL
93 printf("G4OpenGLStoredXmViewer::DrawView () flush\n");
94#endif
95 glFlush ();
96
98
100 FinishView ();
101
102 } else {
103
104#ifdef G4DEBUG_VIS_OGL
105 printf("G4OpenGLStoredXmViewer::DrawView not hlr \n");
106#endif
107 // If kernel visit was needed, drawing and FinishView will already
108 // have been done, so...
109 if (!kernelVisitWasNeeded) {
110#ifdef G4DEBUG_VIS_OGL
111 printf("G4OpenGLStoredXmViewer::ComputeView Don't need kernel Visit \n");
112#endif
114 FinishView ();
115 } else {
116#ifdef G4DEBUG_VIS_OGL
117 printf("G4OpenGLStoredXmViewer::ComputeView Need kernel Visit \n");
118#endif
119 // However, union cutaways are implemented in DrawDisplayLists, so make
120 // an extra pass...
121 if (fVP.IsCutaway() &&
123 ClearView();
125 FinishView ();
126 } else { // ADD TO AVOID KernelVisit=1 and nothing to display
128 FinishView ();
129 }
130 }
131 }
132#ifdef G4DEBUG_VIS_OGL
133 printf("G4OpenGLStoredXmViewer::DrawView ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
134#endif
135}
136
138// glXWaitGL (); //Wait for effects of all previous OpenGL commands to
139 //be propogated before progressing.
140// JA: Commented out July 2021 - slows rendering down in some cases and I
141// don't see any adverse effects.
142
143#ifdef G4DEBUG_VIS_OGL
144 printf("G4OpenGLStoredXmViewer::FinishView () flush \n");
145#endif
146 glFlush (); //FIXME
147
148 GLint renderMode;
149 glGetIntegerv(GL_RENDER_MODE, &renderMode);
150 if (renderMode == GL_RENDER) glXSwapBuffers (dpy, win);
151}
bool G4bool
Definition: G4Types.hh:86
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
G4OpenGLStoredXmViewer(G4OpenGLStoredSceneHandler &scene, const G4String &name="")
virtual void CreateFontLists()
void HaloingSecondPass()
void CreateGLXContext(XVisualInfo *vi)
XVisualInfo * vi_stored
virtual void CreateMainWindow()
G4bool fNeedKernelVisit
Definition: G4VViewer.hh:227
const G4ViewParameters & GetViewParameters() const
void ProcessView()
Definition: G4VViewer.cc:107
G4int fViewId
Definition: G4VViewer.hh:217
G4ViewParameters fVP
Definition: G4VViewer.hh:220
CutawayMode GetCutawayMode() const
G4bool IsCutaway() const
DrawingStyle GetDrawingStyle() const