33 #ifndef G4OpenGLVboDrawer_HH    34 #define G4OpenGLVboDrawer_HH    38 #ifdef G4OPENGL_VERSION_2    41 #define GL2PS_TEXT_B  4    42 #define GL2PS_TEXT_BL 5    43 #define GL2PS_TEXT_BR 6    50 #define glEdgeFlag(a) fVboDrawer->empty()    51 #define glRenderMode(a) fVboDrawer->returnNULL()    52 #define glClipPlane(a,b) fVboDrawer->empty()    53 #define glGetIntegerv(a,b) fVboDrawer->empty()    54 #define glGetFloatv(a,b) fVboDrawer->empty()    55 #define glGetDoublev(a,b) fVboDrawer->empty()    56 #define glPassThrough fVboDrawer->empty()    57 #define glGetBooleanv fVboDrawer->empty()    58 #define glLoadName(a) fVboDrawer->empty()    59 #define glPushMatrix() fVboDrawer->empty()    60 #define glLoadIdentity() fVboDrawer->empty()    61 #define glPopMatrix() fVboDrawer->empty()    62 #define glCallList(a) fVboDrawer->empty()    63 #define glGenLists(a) fVboDrawer->returnNULL()    64 #define glVertex3d fVboDrawer->empty()    65 #define glBegin fVboDrawer->empty()    66 #define glEnd fVboDrawer->empty()    67 #define glNewList(a,b) fVboDrawer->empty()    68 #define glEndList() fVboDrawer->empty()    69 #define glPolygonMode(a,b) fVboDrawer->empty()    70 #define glDrawBuffer(a) fVboDrawer->empty()    71 #define glDeleteLists(a,b) fVboDrawer->empty()    72 #define glStencilFunc(a,b,c) fVboDrawer->empty()    73 #define glStencilOp(a,b,c) fVboDrawer->empty()    74 #define glColorMaterial(a,b) fVboDrawer->empty()    75 #define glLightfv(a,b,c) fVboDrawer->empty()    76 #define glScaled(a,b,c) fVboDrawer->empty()    77 #define gluLookAt fVboDrawer->empty()    78 #define gluPickMatrix fVboDrawer->empty()    79 #define glSelectBuffer(a,b) fVboDrawer->empty()    80 #define glInitNames() fVboDrawer->empty()    81 #define glPushNames(a) fVboDrawer->empty()    82 #define glPushName(a) fVboDrawer->empty()    83 #define glPixelStorei(a,b) fVboDrawer->empty()    84 #define glRasterPos3d(a,b,c) fVboDrawer->empty()    85 #define Geant4_gl2psTextOpt(a,b,c,d,e) fVboDrawer->empty()    86 #define glMaterialfv(a,b,c)  fVboDrawer->empty()    87 #define glCullFace(a) fVboDrawer->empty()    88 #define glReadBuffer(a) fVboDrawer->empty()    89 #define glReadPixels(a,b,c,d,e,f,g) fVboDrawer->empty()    90 #define glTranslatef(a,b,c) fVboDrawer->empty() // TO BE FIXED    96 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER    98 class G4OpenGLImmediateWtViewer;
   103 #define glGetError() Wt::WGLWidget::NONE   105 #define glOrtho fVboDrawer->vboGlOrtho   106 #define glFrustum fVboDrawer->vboGlFrustum   107 #define glViewport fVboDrawer->vboGlViewport   108 #define glEnable fVboDrawer->vboGlEnable   109 #define glDisable fVboDrawer->vboGlDisable   110 #define glBlendFunc fVboDrawer->vboGlBlendFunc   111 #define glClear fVboDrawer->vboGlClear   112 #define glClearColor fVboDrawer->vboGlClearColor   113 #define glClearDepth fVboDrawer->vboGlClearDepth   114 #define glDepthFunc fVboDrawer->vboGlDepthFunc   115 #define glDepthMask fVboDrawer->vboGlDepthMask   116 #define glFlush fVboDrawer->vboGlFlush   117 #define glColorMask fVboDrawer->vboGlColorMask   118 #define glLineWidth fVboDrawer->vboGlLineWidth   119 #define glUniformMatrix4 fVboDrawer->vboGlUniformMatrix4   120 #define glDrawArrays fVboDrawer->vboGlDrawArrays   121 #define glCreateBuffer fVboDrawer->vboGlCreateBuffer   122 #define glVertexPointer fVboDrawer->vboGlVertexPointer   123 #define glBindBuffer fVboDrawer->vboGlBindBuffer   124 #define glDeleteBuffer fVboDrawer->vboGlDeleteBuffer   125 #define glBufferDatafv  fVboDrawer->vboGlBufferDatafv   126 #define glBufferDataiv  fVboDrawer->vboGlBufferDataiv   127 #define glGetAttribLocation fVboDrawer->vboGlGetAttribLocation   128 #define glEnableVertexAttribArray fVboDrawer->vboGlEnableVertexAttribArray   129 #define glDisableVertexAttribArray fVboDrawer->vboGlDisableVertexAttribArray   130 #define glShaderSource fVboDrawer->vboGlShaderSource   131 #define glCompileShader fVboDrawer->vboGlCompileShader   132 #define glCreateShader fVboDrawer->vboGlCreateShader   133 #define glCreateProgram fVboDrawer->vboGlCreateProgram   134 #define glAttachShader fVboDrawer->vboGlAttachShader   135 #define glLinkProgram fVboDrawer->vboGlLinkProgram   136 #define glUseProgram fVboDrawer->vboGlUseProgram   137 #define glDrawElements fVboDrawer->vboGlDrawElements   138 #define glVertexAttribPointer fVboDrawer->vboGlVertexAttribPointer   139 #define glGetUniformLocation fVboDrawer->vboGlGetUniformLocation   140 #define glPointSize fVboDrawer->vboGlPointSize   141 #define glColor3d fVboDrawer->vboGlColor3d   142 #define glColor4d fVboDrawer->vboGlColor4d   143 #define glColor4fv fVboDrawer->vboGlColor4fv   144 #define glMultMatrixd fVboDrawer->vboGlMultMatrixd   145 #define glMultMatrixf fVboDrawer->vboGlMultMatrixf   146 #define glGetUniformLocation fVboDrawer->vboGlGetUniformLocation   147 #define glGetAttribLocation fVboDrawer->vboGlGetAttribLocation   148 #define glMatrixMode fVboDrawer->vboGlMatrixMode   152 #define glUniform1f fVboViewer->uniform1f   153 #define glUniform4fv fVboViewer->uniform4fv   154 #define glUniformMatrix4dv fVboDrawer->vboGlUniformMatrix4;   155 #define glUniformMatrix4fv fVboDrawer->vboGlUniformMatrix4fv;   159 #define GL_VIEWPORT Wt::WGLWidget::VIEWPORT   160 #define GL_RGBA Wt::WGLWidget::RGBA   161 #define GL_ONE_MINUS_SRC_ALPHA Wt::WGLWidget::ONE_MINUS_SRC_ALPHA   162 #define GL_BLEND Wt::WGLWidget::BLEND   163 #define GL_SRC_ALPHA Wt::WGLWidget::SRC_ALPHA   164 #define GL_LEQUAL Wt::WGLWidget::LEQUAL   165 #define GL_FALSE false   166 #define GL_LESS Wt::WGLWidget::LESS   167 #define GL_SELECT Wt::WGLWidget::SELECT   169 #define GL_RGB Wt::WGLWidget::RGB   170 #define GL_CURRENT_RASTER_POSITION_VALID Wt::WGLWidget::CURRENT_RASTER_POSITION_VALID   171 #define GL_ONE Wt::WGLWidget::ONE   172 #define GL_ZERO Wt::WGLWidget::ZERO   173 #define GL_COLOR_INDEX Wt::WGLWidget::COLOR_INDEX   174 #define GL_LINE_TOKEN Wt::WGLWidget::LINE_TOKEN   175 #define GL_LINE_RESET_TOKEN Wt::WGLWidget::LINE_RESET_TOKEN   176 #define GL_POLYGON_TOKEN Wt::WGLWidget::POLYGON_TOKEN   177 #define GL_FEEDBACK Wt::WGLWidget::FEEDBACK   178 #define GL_COLOR_CLEAR_VALUE Wt::WGLWidget::COLOR_CLEAR_VALUE   179 #define GL_BITMAP_TOKEN Wt::WGLWidget::BITMAP_TOKEN   180 #define GL_DRAW_PIXEL_TOKEN Wt::WGLWidget::DRAW_PIXEL_TOKEN   181 #define GL_COPY_PIXEL_TOKEN Wt::WGLWidget::COPY_PIXEL_TOKEN   182 #define GL_PASS_THROUGH_TOKEN Wt::WGLWidget::PASS_THROUGH_TOKEN   183 #define GL_3D_COLOR Wt::WGLWidget::3D_COLOR   184 #define GL_DEPTH_TEST Wt::WGLWidget::DEPTH_TEST   185 #define GL_FRONT Wt::WGLWidget::FRONT   186 #define GL_BACK Wt::WGLWidget::BACK   187 #define GL_FRONT_AND_BACK Wt::WGLWidget::FRONT_AND_BACK   188 #define GL_OUT_OF_MEMORY Wt::WGLWidget::OUT_OF_MEMORY   189 #define GL_LINE_STRIP Wt::WGLWidget::LINE_STRIP   190 #define GL_QUADS Wt::WGLWidget::QUADS   191 #define GL_LINE_LOOP Wt::WGLWidget::LINE_LOOP   192 #define GL_LINES Wt::WGLWidget::LINES   193 #define GL_POINTS Wt::WGLWidget::POINTS   194 #define GL_TRIANGLES Wt::WGLWidget::TRIANGLES   195 #define GL_TRIANGLE_STRIP Wt::WGLWidget::TRIANGLE_STRIP   196 #define GL_TRIANGLE_FAN Wt::WGLWidget::TRIANGLE_FAN   197 #define GL_FLOAT Wt::WGLWidget::FLOAT   198 #define GL_STENCIL_TEST Wt::WGLWidget::STENCIL_TEST   199 #define GL_ALWAYS Wt::WGLWidget::ALWAYS   200 #define GL_INVERT Wt::WGLWidget::INVERT   201 #define GL_COMPILE_AND_EXECUTE Wt::WGLWidget::COMPILE_AND_EXECUTE   202 #define GL_COMPILE Wt::WGLWidget::COMPILE   203 #define GL_COLOR_BUFFER_BIT Wt::WGLWidget::COLOR_BUFFER_BIT   204 #define GL_DEPTH_BUFFER_BIT Wt::WGLWidget::DEPTH_BUFFER_BIT   205 #define GL_STENCIL_BUFFER_BIT Wt::WGLWidget::STENCIL_BUFFER_BIT   206 #define GL_UNSIGNED_BYTE Wt::WGLWidget::UNSIGNED_BYTE   207 #define GL_ARRAY_BUFFER Wt::WGLWidget::ARRAY_BUFFER   208 #define GL_ELEMENT_ARRAY_BUFFER Wt::WGLWidget::ELEMENT_ARRAY_BUFFER   209 #define GL_RENDER Wt::WGLWidget::RENDER   210 #define GL_LUMINANCE Wt::WGLWidget::LUMINANCE   211 #define GL_STATIC_DRAW Wt::WGLWidget::STATIC_DRAW   212 #define GL_FRAGMENT_SHADER Wt::WGLWidget::FRAGMENT_SHADER   213 #define GL_VERTEX_SHADER Wt::WGLWidget::VERTEX_SHADER   214 #define GL_UNSIGNED_INT Wt::WGLWidget::UNSIGNED_INT   215 #define GL_UNSIGNED_SHORT Wt::WGLWidget::UNSIGNED_SHORT   216 #define GL_CULL_FACE Wt::WGLWidget::CULL_FACE   217 #define GL_MAX_VIEWPORT_DIMS Wt::WGLWidget::MAX_VIEWPORT_DIMS   218 #define GL_PROJECTION Wt::WGLWidget::FRAGMENT_SHADER  // Not the good value, but should be ok, work together with GL_MODELVIEW   219 #define GL_MODELVIEW Wt::WGLWidget::VERTEX_SHADER // Not the good value, but should be ok, work together with GL_PROJECTION   224 #define GL_PROJECTION_MATRIX 0   225 #define GL_UNPACK_SWAP_BYTES 0   226 #define GL_UNPACK_LSB_FIRST 0   227 #define GL_UNPACK_SKIP_ROWS 0   228 #define GL_UNPACK_LOW_LENGHT 0   229 #define GL_UNPACK_SKIP_PIXELS 0   230 #define GL_UNPACK_ALIGNMENT 0   231 #define GL_UNPACK_ROW_LENGTH 0   232 #define GL_CLIP_PLANE0 Wt::WGLWidget::NONE   233 #define GL_CLIP_PLANE1 Wt::WGLWidget::NONE   234 #define GL_CLIP_PLANE2 Wt::WGLWidget::NONE   235 #define GL_CLIP_PLANE3 Wt::WGLWidget::NONE   236 #define GL_CLIP_PLANE4 Wt::WGLWidget::NONE   237 #define GL_COLOR_MATERIAL Wt::WGLWidget::NONE   238 #define GL_AMBIENT_AND_DIFFUSE Wt::WGLWidget::NONE   240 #define GL_LIGHTING Wt::WGLWidget::NONE   241 #define GL_POINT_SMOOTH Wt::WGLWidget::NONE   242 #define GL_LINE_SMOOTH Wt::WGLWidget::NONE   243 #define GL_POLYGON_SMOOTH Wt::WGLWidget::NONE   244 #define GL_LIGHT0  Wt::WGLWidget::NONE   245 #define GL_AMBIENT Wt::WGLWidget::NONE   246 #define GL_DIFFUSE Wt::WGLWidget::NONE   247 #define GL_POSITION Wt::WGLWidget::NONE   249 #define GLenum Wt::WGLWidget::GLenum   251 typedef unsigned char GLboolean;
   252 typedef unsigned int GLbitfield;
   255 typedef short GLshort;
   257 typedef unsigned char GLubyte;
   258 typedef unsigned short GLushort;
   259 typedef unsigned int GLuint;
   261 typedef float GLfloat;
   262 typedef float GLclampf;
   263 typedef double GLdouble;
   264 typedef double GLclampd;
   273 class G4OpenGLImmediateQtViewer;
   275 #define glOrtho fVboDrawer->vboGlOrtho   276 #define glFrustum fVboDrawer->vboGlFrustum   277 #define glMultMatrixf fVboDrawer->vboGlMultMatrixf   278 #define glMultMatrixd fVboDrawer->vboGlMultMatrixd   279 #define glMatrixMode fVboDrawer->vboGlMatrixMode   280 #define glPointSize fVboDrawer->vboGlPointSize   281 #define glColor3d fVboDrawer->vboGlColor3d   282 #define glColor4d fVboDrawer->vboGlColor4d   283 #define glColor4fv fVboDrawer->vboGlColor4fv   286 #endif // G4VIS_BUILD_OPENGLQT_DRIVER   289 class G4OpenGLViewer;
   291 class G4OpenGLVboDrawer {
   293   G4OpenGLVboDrawer (G4OpenGLViewer*, std::string type);
   297   virtual ~G4OpenGLVboDrawer ();
   300 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER   301   void vboGlClear(Wt::WFlags< GLenum > 
mask);
   302   void vboGlUniformMatrix4(
const Wt::WGLWidget::UniformLocation &location, 
const Wt::WMatrix4x4 &
mat);
   303   void vboGlUniformMatrix4(
const Wt::WGLWidget::UniformLocation &location, 
const double* matrix);
   304   void vboGlUniformMatrix4fv(
const Wt::WGLWidget::UniformLocation &location, 
const float* matrix);
   305   void vboGlUniformMatrix4(
const Wt::WGLWidget::UniformLocation &location, 
const Wt::WGLWidget::JavaScriptMatrix4x4 &
mat);
   306   Wt::WGLWidget::Buffer vboGlCreateBuffer();
   307   void vboGlBindBuffer(GLenum 
target, Wt::WGLWidget::Buffer 
buffer);
   308   void vboGlDeleteBuffer(Wt::WGLWidget::Buffer 
buffer);
   309   void vboGlVertexAttribPointer(Wt::WGLWidget::AttribLocation location, 
int size, GLenum type, 
bool normalized, 
unsigned stride, 
unsigned offset);
   310   void vboGlShaderSource(Wt::WGLWidget::Shader shader, GLsizei , 
const GLchar **src, 
const GLint *);
   311   void vboGlCompileShader(Wt::WGLWidget::Shader shader);
   312   Wt::WGLWidget::Shader vboGlCreateShader(GLenum shader);
   313   Wt::WGLWidget::Program vboGlCreateProgram();
   314   void vboGlAttachShader(Wt::WGLWidget::Program program, Wt::WGLWidget::Shader shader);
   315   void vboGlLinkProgram(Wt::WGLWidget::Program program);
   316   void vboGlUseProgram(Wt::WGLWidget::Program program);
   317   void vboGlEnableVertexAttribArray(Wt::WGLWidget::AttribLocation pointer);
   318   void vboGlDisableVertexAttribArray(Wt::WGLWidget::AttribLocation pointer);
   319   Wt::WGLWidget::UniformLocation vboGlGetUniformLocation(Wt::WGLWidget::Program programm,
const std::string &src);
   320   Wt::WGLWidget::AttribLocation vboGlGetAttribLocation(Wt::WGLWidget::Program shader,
const std::string &src);
   322   void vboGlClearColor (
double r, 
double g, 
double b, 
double a);
   323   void vboGlClearDepth(
double depth);
   324   void vboGlViewport(
int x, 
int y, 
unsigned width, 
unsigned height);
   325   void vboGlEnable(GLenum cap);
   326   void vboGlDisable(GLenum cap);
   327   void vboGlBlendFunc (GLenum sfactor, GLenum dfactor);
   328   void vboGlDepthFunc (GLenum func);
   329   void vboGlDepthMask(
bool flag);
   330   void vboGlColorMask (
bool red, 
bool green, 
bool blue, 
bool alpha);
   331   void vboGlLineWidth(
double width);
   332   void vboGlDrawArrays(GLenum mode, 
int first, 
unsigned count);
   333   void vboGlBufferDatafv(GLenum 
target, 
const std::vector<double>::iterator begin, 
const std::vector<double>::iterator end, GLenum 
usage);
   334   void vboGlBufferDataiv(GLenum 
target, 
const std::vector<unsigned short>::iterator begin, 
const std::vector<unsigned short>::iterator end, GLenum 
usage, GLenum type);
   335   void vboGlDrawElements(GLenum mode, 
unsigned count, GLenum type, 
unsigned offset);
   336   void vboGlMultMatrixf( 
const GLfloat *
m );
   337   void vboGlMultMatrixd( 
const GLdouble *
m );
   339   void vboGlMultMatrixf( 
const GLfloat *
m );
   340   void vboGlMultMatrixd( 
const GLdouble *
m );
   344   void vboGlOrtho(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
   345   void vboGlFrustum(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
   346   void vboGlMatrixMode(GLenum);
   347   void vboGlPointSize(
float size);
   348   inline void vboGlColor3d(
int red,
int green,
int blue) {
   349     vboGlColor4d(red,green, blue, 1.0);
   351   void vboGlColor4d(
int red,
int green,
int blue,
int alpha);
   352   void vboGlColor4fv(
const GLfloat*);
   353   inline const char * getFragmentShaderSrc() {
   354     return fFragmentShaderSrc;
   356   inline const char * getVertexShaderSrc() {
   357     return fVertexShaderSrc;
   359   inline bool isVBO() {
   360     if ((fOGLType == 
"OGL-ES") || (fOGLType == 
"OGL-VBO")) {
   365   inline void empty() {}
   366   inline GLuint returnNULL() {
   371   const char *fFragmentShaderSrc;
   372   const char *fVertexShaderSrc;
   373   std::string fOGLType;
   376 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER   377   G4OpenGLImmediateWtViewer* fVboViewer;
   379   G4OpenGLImmediateQtViewer* fVboViewer;
   380 #endif // G4VIS_BUILD_OPENGLWT_DRIVER   383 #endif // G4OPENGL_VERSION_2   385 #endif // G4OpenGLVboDrawer_HH 
cout<< "-> Edep in the target
 
static const G4double alpha