00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifdef G4VIS_BUILD_OPENGLXM_DRIVER
00035
00036 #include "G4OpenGLImmediateXmViewer.hh"
00037 #include "G4OpenGLImmediateSceneHandler.hh"
00038
00039 #include "G4ios.hh"
00040
00041 G4OpenGLImmediateXmViewer::
00042 G4OpenGLImmediateXmViewer(G4OpenGLImmediateSceneHandler& sceneHandler,
00043 const G4String& name)
00044 : G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name),
00045 G4OpenGLViewer (sceneHandler),
00046 G4OpenGLXmViewer (sceneHandler),
00047 G4OpenGLImmediateViewer (sceneHandler)
00048 {
00049 if (fViewId < 0) return;
00050
00051
00052 if (!vi_immediate) {
00053 G4cerr << "G4OpenGLImmediateXmViewer::G4OpenGLImmediateXmViewer -"
00054 " G4OpenGLXmViewer couldn't get a visual." << G4endl;
00055 fViewId = -1;
00056 return;
00057 }
00058 }
00059
00060 G4OpenGLImmediateXmViewer::~G4OpenGLImmediateXmViewer () {}
00061
00062 void G4OpenGLImmediateXmViewer::Initialise () {
00063
00064 CreateGLXContext (vi_immediate);
00065 CreateMainWindow ();
00066 CreateFontLists ();
00067
00068 InitializeGLView ();
00069
00070
00071
00072 glDrawBuffer (GL_FRONT);
00073 }
00074
00075 void G4OpenGLImmediateXmViewer::DrawView () {
00076
00077 G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
00078
00079 #ifdef G4DEBUG_VIS_OGL
00080 printf("G4OpenGLImmediateXmViewer::DrawView : \n");
00081 #endif
00082
00083
00084 glXMakeCurrent (dpy, win, cx);
00085
00086 if(style!=G4ViewParameters::hlr &&
00087 haloing_enabled) {
00088
00089 HaloingFirstPass ();
00090 NeedKernelVisit ();
00091 #ifdef G4DEBUG_VIS_OGL
00092 printf("G4OpenGLImmediateXmViewer::DrawView : change param\n");
00093 #endif
00094 ProcessView ();
00095 glFlush ();
00096
00097 HaloingSecondPass ();
00098
00099 }
00100
00101 #ifdef G4DEBUG_VIS_OGL
00102 printf("G4OpenGLImmediateXmViewer::DrawView : need Kernel/Process/Finish\n");
00103 #endif
00104 NeedKernelVisit ();
00105 ProcessView ();
00106 FinishView ();
00107
00108 }
00109
00110 void G4OpenGLImmediateXmViewer::FinishView () {
00111 #ifdef G4DEBUG_VIS_OGL
00112 printf("G4OpenGLImmediateXmViewer::FinishView : \n");
00113 #endif
00114 glXWaitGL ();
00115
00116 glFlush ();
00117 }
00118
00119 #endif