Changeset 1122 for trunk


Ignore:
Timestamp:
Oct 8, 2009, 11:05:25 AM (15 years ago)
Author:
garnier
Message:

en test

Location:
trunk/source/visualization/OpenGL
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh

    r1121 r1122  
    7373private:
    7474  void ComputeView ();
    75 
     75  GLuint box;
    7676  //  QImage glBufferImage;
    7777};
  • trunk/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc

    r1121 r1122  
    3333
    3434#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
    35 #define QT_STORE_46_DBG 1
     35//#define QT_STORE_46_DBG 1
    3636
    3737#include "G4VViewer.hh"
  • trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r1121 r1122  
    14361436  printf("G4OpenGLQtViewer::FinishView\n");
    14371437#endif
    1438    glFlush ();
    1439    fWindow->swapBuffers ();
     1438  glFlush ();
     1439  GLint renderMode;
     1440  glGetIntegerv(GL_RENDER_MODE, &renderMode);
     1441  if (renderMode == GL_RENDER)  printf("G4OpenGLQtViewer::FinishView           RENDER !!!!\n");
     1442  else  printf("G4OpenGLQtViewer::FinishView           not RENDER !!!!\n");
     1443 
     1444  // THIS IF ALLREADY DONE BY THE paintEvent() function
     1445  // Who call it, I don't know...
     1446 
     1447  fWindow->swapBuffers ();
    14401448}
    14411449
  • trunk/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc

    r1121 r1122  
    9292 
    9393
    94  return;                                                                                // Initialization Went OK
     94 
     95  box=glGenLists(1);
     96  glNewList(box,GL_COMPILE);
     97  glBegin(GL_QUADS);
     98  //carré rouge
     99  glColor3ub(255,0,0);
     100  glVertex3d(9,9,0);
     101  glVertex3d(9,0,0);
     102  glVertex3d(0,0,0);
     103  glVertex3d(0,9,0);
     104  //carré vert
     105  glColor3ub(0,255,0);
     106  glVertex3d(9,9,0);
     107  glVertex3d(18,9,0);
     108  glVertex3d(18,0,0);
     109  glVertex3d(9,0,0);
     110  //carré vert
     111  glColor3ub(0,255,0);
     112  glVertex3d(0,18,0);
     113  glVertex3d(9,18,0);
     114  glVertex3d(9,9,0);
     115  glVertex3d(0,9,0);
     116  //carré bleu
     117  glColor3ub(0,0,255);
     118  glVertex3d(18,18,0);
     119  glVertex3d(18,9,0);
     120  glVertex3d(9,9,0);
     121  glVertex3d(9,18,0);
     122  //carré bleu
     123  glColor3ub(0,0,255);
     124  glVertex3d(9,0,0);
     125  glVertex3d(9,9,0);
     126  glVertex3d(9,9,9);
     127  glVertex3d(9,0,9);
     128  //carré blanc
     129  glColor3ub(255,255,255);
     130  glVertex3d(9,9,0);
     131  glVertex3d(0,9,0);
     132  glVertex3d(0,9,9);
     133  glVertex3d(9,9,9);
     134  //carré rouge
     135  glColor3ub(255,0,0);
     136  glVertex3d(9,9,9);
     137  glVertex3d(9,0,9);
     138  glVertex3d(0,0,9);
     139  glVertex3d(0,9,9);
     140  glEnd();
     141  glEndList();
     142  return;                                                                               // Initialization Went OK
    95143
    96144 }
     
    146194#ifdef QT_STORE_46_DBG_COMPUTE
    147195void G4OpenGLStoredQtViewer::ComputeView () {
     196  makeCurrent();
     197  ProcessView ();
     198  glCallList(box);
     199
     200  FinishView ();
     201#ifdef G4DEBUG_VIS_OGL
     202  printf("G4OpenGLStoredQtViewer::ComputeView          CALL LIST -%d-\n",doubleBuffer());
     203#endif
     204 }
     205#else
     206void G4OpenGLStoredQtViewer::ComputeView () {
     207
     208#ifdef G4DEBUG_VIS_OGL
     209  printf("G4OpenGLStoredQtViewer::ComputeView %d %d   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",getWinWidth(), getWinHeight());
     210#endif
     211  makeCurrent();
     212  G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
     213
     214  //Make sure current viewer is attached and clean...
     215
     216  //See if things have changed from last time and remake if necessary...
     217  // The fNeedKernelVisit flag might have been set by the user in
     218  // /vis/viewer/rebuild, but if not, make decision and set flag only
     219  // if necessary...
     220  if (!fNeedKernelVisit) {
     221    KernelVisitDecision ();
     222  }
     223  G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
     224  ProcessView ();
     225   
     226
     227  if(style!=G4ViewParameters::hlr &&
     228     haloing_enabled) {
     229#ifdef G4DEBUG_VIS_OGL
     230    printf("G4OpenGLStoredQtViewer::ComputeView DANS LE IF\n");
     231#endif
     232
     233    HaloingFirstPass ();
     234    DrawDisplayLists ();
     235#ifdef G4DEBUG_VIS_OGL
     236    printf("glFlush ()  G4OpenGLStoredQtViewer\n ");
     237#endif
     238    glFlush ();
     239
     240    HaloingSecondPass ();
     241
     242    DrawDisplayLists ();
     243    FinishView ();
     244
     245  } else {
     246     
     247    // If kernel visit was needed, drawing and FinishView will already
     248    // have been done, so...
     249    if (!kernelVisitWasNeeded) {
     250#ifdef G4DEBUG_VIS_OGL
     251      printf("**************************  G4OpenGLStoredQtViewer::ComputeView Don't need kernel Visit \n");
     252#endif
     253      DrawDisplayLists ();
     254      FinishView ();
     255    } else {
     256#ifdef G4DEBUG_VIS_OGL
     257      printf("**************************  G4OpenGLStoredQtViewer::ComputeView need kernel Visit \n");
     258#endif
     259      // However, union cutaways are implemented in DrawDisplayLists, so make
     260      // an extra pass...
     261      if (fVP.IsCutaway() &&
     262          fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
     263        ClearView();
     264        DrawDisplayLists ();
     265        FinishView ();
     266#ifdef G4DEBUG_VIS_OGL
     267        printf("***************************  CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
     268#endif
     269      } else { // ADD TO AVOID KernelVisit=1 and nothing to display
     270        DrawDisplayLists ();
     271        FinishView ();
     272      }
     273    }
     274  }
     275
     276  if (isRecording()) {
     277    savePPMToTemp();
     278  }
     279
     280#ifdef G4DEBUG_VIS_OGL
     281  printf("G4OpenGLStoredQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",getWinWidth(), getWinHeight());
     282#endif
     283  fHasToRepaint =true;
     284}
     285#endif
     286
     287
     288/**
     289   - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
     290*/
     291#ifdef QT_STORE_46_DBG_RESIZE
     292void G4OpenGLStoredQtViewer::resizeGL(
     293                                      int aWidth
     294                                      ,int aHeight)
     295
     296#ifdef G4DEBUG_VIS_OGL
     297  printf("G4OpenGLStoredQtViewer::resizeGL\n");
     298#endif
     299  // Set new size, it will be update when next Repaint()->SetView() called
     300  if (2 == 1) {
     301    if (aHeight==0)
     302      {
     303        aHeight=1;     
     304      }
     305   
     306    glViewport(0,0,aWidth,aHeight);
     307   
     308    glMatrixMode(GL_PROJECTION);               
     309    glLoadIdentity();   
     310   
     311    // Calculate The Aspect Ratio Of The Window
     312    gluPerspective(45.0f,(GLfloat)aWidth/(GLfloat)aHeight,0.1f,100.0f);
     313   
     314    glMatrixMode(GL_MODELVIEW);
     315    glLoadIdentity();
     316  } else {
     317    int side = qMin(aWidth, aHeight);
     318    glViewport((aWidth - side) / 2, (aHeight - side) / 2, side, side);
     319   
     320    glMatrixMode(GL_PROJECTION);
     321    glLoadIdentity();
     322    glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0);
     323    glMatrixMode(GL_MODELVIEW);
     324  }
     325}
     326#else
     327void G4OpenGLStoredQtViewer::resizeGL(
     328                                      int aWidth
     329                                      ,int aHeight)
     330
     331#ifdef G4DEBUG_VIS_OGL
     332  printf("G4OpenGLStoredQtViewer::resizeGL\n");
     333#endif
     334  // Set new size, it will be update when next Repaint()->SetView() called
     335
     336  ResizeWindow(aWidth,aHeight);
     337
     338
     339
     340  SetView(); // en test .......................
     341  //  ResizeGLView(); // en test .......................
     342
     343
     344
     345
     346  fHasToRepaint = sizeHasChanged();
     347}
     348#endif
     349
     350
     351#ifdef QT_STORE_46_DBG_PAINT
     352void G4OpenGLStoredQtViewer::paintGL()
     353{
     354#ifdef G4DEBUG_VIS_OGL
     355  printf("G4OpenGLStoredQtViewer::paintGL                                Immediate\n");
     356#endif
     357    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     358    glMatrixMode(GL_MODELVIEW);
     359    glLoadIdentity();
     360    gluLookAt(15,15,15,0,0,0,0,0,1);
     361
    148362    glBegin(GL_QUADS);
    149363    //carré rouge
     
    190404    glVertex3d(0,9,9);
    191405    glEnd();
    192  }
    193 #else
    194 void G4OpenGLStoredQtViewer::ComputeView () {
    195 
    196 #ifdef G4DEBUG_VIS_OGL
    197   printf("G4OpenGLStoredQtViewer::ComputeView %d %d   VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",getWinWidth(), getWinHeight());
    198 #endif
    199   makeCurrent();
    200   G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle();
    201 
    202   //Make sure current viewer is attached and clean...
    203 
    204   //See if things have changed from last time and remake if necessary...
    205   // The fNeedKernelVisit flag might have been set by the user in
    206   // /vis/viewer/rebuild, but if not, make decision and set flag only
    207   // if necessary...
    208   if (!fNeedKernelVisit) {
    209     KernelVisitDecision ();
    210   }
    211   G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets).
    212   ProcessView ();
    213    
    214 
    215   if(style!=G4ViewParameters::hlr &&
    216      haloing_enabled) {
    217 #ifdef G4DEBUG_VIS_OGL
    218     printf("G4OpenGLStoredQtViewer::ComputeView DANS LE IF\n");
    219 #endif
    220 
    221     HaloingFirstPass ();
    222     DrawDisplayLists ();
    223 #ifdef G4DEBUG_VIS_OGL
    224     printf("glFlush ()  G4OpenGLStoredQtViewer\n ");
    225 #endif
    226     glFlush ();
    227 
    228     HaloingSecondPass ();
    229 
    230     DrawDisplayLists ();
    231     FinishView ();
    232 
    233   } else {
    234      
    235     // If kernel visit was needed, drawing and FinishView will already
    236     // have been done, so...
    237     if (!kernelVisitWasNeeded) {
    238 #ifdef G4DEBUG_VIS_OGL
    239       printf("**************************  G4OpenGLStoredQtViewer::ComputeView Don't need kernel Visit \n");
    240 #endif
    241       DrawDisplayLists ();
    242       FinishView ();
    243     } else {
    244 #ifdef G4DEBUG_VIS_OGL
    245       printf("**************************  G4OpenGLStoredQtViewer::ComputeView need kernel Visit \n");
    246 #endif
    247       // However, union cutaways are implemented in DrawDisplayLists, so make
    248       // an extra pass...
    249       if (fVP.IsCutaway() &&
    250           fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {
    251         ClearView();
    252         DrawDisplayLists ();
    253         FinishView ();
    254 #ifdef G4DEBUG_VIS_OGL
    255         printf("***************************  CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
    256 #endif
    257       } else { // ADD TO AVOID KernelVisit=1 and nothing to display
    258         DrawDisplayLists ();
    259         FinishView ();
    260       }
    261     }
    262   }
    263 
    264   if (isRecording()) {
    265     savePPMToTemp();
    266   }
    267 
    268 #ifdef G4DEBUG_VIS_OGL
    269   printf("G4OpenGLStoredQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",getWinWidth(), getWinHeight());
    270 #endif
    271   fHasToRepaint =true;
    272 }
    273 #endif
    274 
    275 
    276 /**
    277    - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements
    278 */
    279 #ifdef QT_STORE_46_DBG_RESIZE
    280 void G4OpenGLStoredQtViewer::resizeGL(
    281                                       int aWidth
    282                                       ,int aHeight)
    283 
    284 #ifdef G4DEBUG_VIS_OGL
    285   printf("G4OpenGLStoredQtViewer::resizeGL\n");
    286 #endif
    287   // Set new size, it will be update when next Repaint()->SetView() called
    288   if (2 == 1) {
    289     if (aHeight==0)
    290       {
    291         aHeight=1;     
    292       }
    293    
    294     glViewport(0,0,aWidth,aHeight);
    295    
    296     glMatrixMode(GL_PROJECTION);               
    297     glLoadIdentity();   
    298    
    299     // Calculate The Aspect Ratio Of The Window
    300     gluPerspective(45.0f,(GLfloat)aWidth/(GLfloat)aHeight,0.1f,100.0f);
    301    
    302     glMatrixMode(GL_MODELVIEW);
    303     glLoadIdentity();
    304   } else {
    305     int side = qMin(aWidth, aHeight);
    306     glViewport((aWidth - side) / 2, (aHeight - side) / 2, side, side);
    307    
    308     glMatrixMode(GL_PROJECTION);
    309     glLoadIdentity();
    310     glOrtho(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0);
    311     glMatrixMode(GL_MODELVIEW);
    312   }
    313 }
    314 #else
    315 void G4OpenGLStoredQtViewer::resizeGL(
    316                                       int aWidth
    317                                       ,int aHeight)
    318 
    319 #ifdef G4DEBUG_VIS_OGL
    320   printf("G4OpenGLStoredQtViewer::resizeGL\n");
    321 #endif
    322   // Set new size, it will be update when next Repaint()->SetView() called
    323 
    324   ResizeWindow(aWidth,aHeight);
    325 
    326 
    327 
    328   SetView(); // en test .......................
    329   //  ResizeGLView(); // en test .......................
    330 
    331 
    332 
    333 
    334   fHasToRepaint = sizeHasChanged();
    335 }
    336 #endif
    337 
    338 
    339 #ifdef QT_STORE_46_DBG_PAINT
    340 void G4OpenGLStoredQtViewer::paintGL()
    341 {
    342 #ifdef G4DEBUG_VIS_OGL
    343   printf("G4OpenGLStoredQtViewer::paintGL\n");
    344 #endif
    345     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    346     glMatrixMode(GL_MODELVIEW);
    347     glLoadIdentity();
    348     gluLookAt(15,15,15,0,0,0,0,0,1);
    349 
    350     glBegin(GL_QUADS);
    351     //carré rouge
    352     glColor3ub(255,0,0);
    353     glVertex3d(9,9,0);
    354     glVertex3d(9,0,0);
    355     glVertex3d(0,0,0);
    356     glVertex3d(0,9,0);
    357     //carré vert
    358     glColor3ub(0,255,0);
    359     glVertex3d(9,9,0);
    360     glVertex3d(18,9,0);
    361     glVertex3d(18,0,0);
    362     glVertex3d(9,0,0);
    363     //carré vert
    364     glColor3ub(0,255,0);
    365     glVertex3d(0,18,0);
    366     glVertex3d(9,18,0);
    367     glVertex3d(9,9,0);
    368     glVertex3d(0,9,0);
    369     //carré bleu
    370     glColor3ub(0,0,255);
    371     glVertex3d(18,18,0);
    372     glVertex3d(18,9,0);
    373     glVertex3d(9,9,0);
    374     glVertex3d(9,18,0);
    375     //carré bleu
    376     glColor3ub(0,0,255);
    377     glVertex3d(9,0,0);
    378     glVertex3d(9,9,0);
    379     glVertex3d(9,9,9);
    380     glVertex3d(9,0,9);
    381     //carré blanc
    382     glColor3ub(255,255,255);
    383     glVertex3d(9,9,0);
    384     glVertex3d(0,9,0);
    385     glVertex3d(0,9,9);
    386     glVertex3d(9,9,9);
    387     //carré rouge
    388     glColor3ub(255,0,0);
    389     glVertex3d(9,9,9);
    390     glVertex3d(9,0,9);
    391     glVertex3d(0,0,9);
    392     glVertex3d(0,9,9);
    393     glEnd();
    394406}
    395407
     
    472484void G4OpenGLStoredQtViewer::updateQWidget() {
    473485  fHasToRepaint= true;
     486#ifdef G4DEBUG_VIS_OGL
     487  printf("G4OpenGLStoredQtViewer::updateQWidget\n");
     488#endif
    474489  updateGL();
    475490  fHasToRepaint= false;
Note: See TracChangeset for help on using the changeset viewer.