Ignore:
Timestamp:
May 19, 2010, 5:11:38 PM (14 years ago)
Author:
garnier
Message:

avant commit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc

    r1242 r1253  
    2525//
    2626//
    27 // $Id: G4OpenGLSceneHandler.cc,v 1.56 2009/10/21 15:18:43 allison Exp $
     27// $Id: G4OpenGLSceneHandler.cc,v 1.57 2010/04/30 13:18:32 lgarnier Exp $
    2828// GEANT4 tag $Name:  $
    2929//
     
    198198void G4OpenGLSceneHandler::AddPrimitive (const G4Polymarker& polymarker)
    199199{
    200 #ifdef G4DEBUG_VIS_OGL
    201 // printf("G4OpenGLSceneHandler::AddPrimitive polymarker");
    202 #endif
    203200  G4int nPoints = polymarker.size ();
    204201  if (nPoints <= 0) return;
     
    217214  case G4Polymarker::dots:
    218215    {
    219 #ifdef G4DEBUG_VIS_OGL
    220 // printf(" dots ");
    221 #endif
    222216      for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
    223217        G4Circle dot (polymarker);
     
    231225  case G4Polymarker::circles:
    232226    {
    233 #ifdef G4DEBUG_VIS_OGL
    234 // printf(" circle ");
    235 #endif
    236 #ifdef G4VIS_BUILD_OPTIMISE_3
    237227      std::vector <G4VMarker> circleV;
    238       // FIXME, must check attribute before doing a list
    239 #endif
    240228      for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
    241229        G4Circle circle (polymarker);
    242230        // If not already drawn
    243231        circle.SetPosition (polymarker[iPoint]);
    244 #ifdef G4VIS_BUILD_OPTIMISE_3
    245232        circleV.push_back(circle);
    246 #endif
    247       }
    248 #ifdef G4VIS_BUILD_OPTIMISE_3
     233        //      G4OpenGLSceneHandler::AddPrimitive (circle);
     234      }
    249235      G4OpenGLSceneHandler::AddPrimitives (circleV);
    250 #endif
    251236    }
    252237    break;
    253238  case G4Polymarker::squares:
    254239    {
    255 #ifdef G4DEBUG_VIS_OGL
    256 // printf(" square ");
    257 #endif
    258 #ifdef G4VIS_BUILD_OPTIMISE_3
    259240      std::vector <G4VMarker> squareV;
    260       // FIXME, must check attribute before doing a list
    261 #endif
    262241      for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
    263242        G4Square square (polymarker);
    264243        square.SetPosition (polymarker[iPoint]);
    265 #ifdef G4VIS_BUILD_OPTIMISE_3
    266244        squareV.push_back(square);
    267 #endif
    268       }
    269 #ifdef G4VIS_BUILD_OPTIMISE_3
     245        //      G4OpenGLSceneHandler::AddPrimitive (square);
     246      }
    270247      G4OpenGLSceneHandler::AddPrimitives (squareV);
    271 #endif
    272248    }
    273249    break;
    274250  }
    275251
    276 #ifdef G4DEBUG_VIS_OGL
    277 // printf(" \n");
    278 #endif
    279252  fProcessingPolymarker = false;
    280253}
     
    340313void G4OpenGLSceneHandler::AddPrimitives (std::vector <G4VMarker> square) {
    341314  glDisable (GL_POINT_SMOOTH);
    342   AddCircleSquares (square, G4OpenGLBitMapStore::square);
     315  AddCircleSquareVector (square, G4OpenGLBitMapStore::square);
    343316}
    344317
     
    347320 G4OpenGLBitMapStore::Shape shape) {
    348321
    349   if (!fProcessingPolymarker) {  // Polymarker has already loaded atts.
    350     // Loads G4Atts for picking...
    351     if (fpViewer->GetViewParameters().IsPicking()) {
    352       G4AttHolder* holder = new G4AttHolder;
    353       LoadAtts(marker, holder);
    354       fPickMap[fPickName] = holder;
    355     }
    356   }
    357 
    358   // Note: colour treated in sub-class.
    359 
    360   if (fpViewer -> GetViewParameters ().IsMarkerNotHidden ()) {
    361 #ifdef G4DEBUG_VIS_OGL
    362     //    printf("+");
    363 #endif
    364     glDisable (GL_DEPTH_TEST);
    365   } else {
    366 #ifdef G4DEBUG_VIS_OGL
    367     //    printf("-");
    368 #endif
    369     glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LESS);}
    370  
    371   glDisable (GL_LIGHTING);
    372  
    373   // Get vis attributes - pick up defaults if none.
    374   const G4VisAttributes* pVA =
    375     fpViewer -> GetApplicableVisAttributes (marker.GetVisAttributes ());
    376 
    377   G4double lineWidth = GetLineWidth(pVA);
    378   glLineWidth(lineWidth);
    379 
    380   G4VMarker::FillStyle style = marker.GetFillStyle();
    381 
    382   G4bool filled = false;
    383   static G4bool hashedWarned = false;
    384  
    385   switch (style) {
    386   case G4VMarker::noFill:
    387     glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
    388     filled = false;
    389     break;
    390    
    391   case G4VMarker::hashed:
    392     if (!hashedWarned) {
    393       G4cout << "Hashed fill style in G4OpenGLSceneHandler."
    394              << "\n  Not implemented.  Using G4VMarker::filled."
    395              << G4endl;
    396       hashedWarned = true;
    397     }
    398     // Maybe use
    399     //glPolygonStipple (fStippleMaskHashed);
    400     // Drop through to filled...
    401    
    402   case G4VMarker::filled:
    403     glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
    404     filled = true;
    405     break;
    406    
    407   }
    408 
    409   // A few useful quantities...
    410   G4Point3D centre = marker.GetPosition();
    411   MarkerSizeType sizeType;
    412   G4double size = GetMarkerSize(marker, sizeType);
    413 
    414 
    415   // Draw...
    416    if (sizeType == world) {  // Size specified in world coordinates.
    417 
    418      DrawXYPolygon (shape, size, centre, pVA);
    419 
    420    } else { // Size specified in screen (window) coordinates.
    421      glPointSize (size);       
    422      glBegin (GL_POINTS);
    423      glVertex3f(centre.x(),centre.y(),centre.z());
    424      glEnd();
    425      //Antialiasing
    426      glEnable (GL_POINT_SMOOTH);
    427      //Transparency
    428      glEnable(GL_BLEND);
    429      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    430 
    431      // L. GARNIER 1 March 2009
    432      // Old method, we draw a bitmap instead of a GL_POINT.
    433      // I remove it because it cost in term of computing performances
    434      // and gl2ps can't draw bitmaps
    435 
    436      //      glRasterPos3d(centre.x(),centre.y(),centre.z());
    437      //      const GLubyte* marker =
    438      //        G4OpenGLBitMapStore::GetBitMap(shape, size, filled);
    439      //      glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    440      //      glBitmap(GLsizei(size), GLsizei(size), size/2., size/2., 0., 0., marker);
    441    }
    442 }
    443 
    444 void G4OpenGLSceneHandler::AddCircleSquares
     322  std::vector <G4VMarker> circleVector;
     323  circleVector.push_back(marker);
     324  AddCircleSquareVector(circleVector,shape);
     325}
     326 
     327void G4OpenGLSceneHandler::AddCircleSquareVector
    445328(std::vector <G4VMarker> marker,
    446329 G4OpenGLBitMapStore::Shape shape) {
     
    462345
    463346  if (fpViewer -> GetViewParameters ().IsMarkerNotHidden ()) {
    464 #ifdef G4DEBUG_VIS_OGL
    465     //    printf("+");
    466 #endif
    467347    glDisable (GL_DEPTH_TEST);
    468348  } else {
    469 #ifdef G4DEBUG_VIS_OGL
    470     //    printf("-");
    471 #endif
    472     glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LESS);}
     349    glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LESS);
     350  }
    473351 
    474352  glDisable (GL_LIGHTING);
Note: See TracChangeset for help on using the changeset viewer.