Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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