Changeset 1253 for trunk


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

avant commit

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

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/GNUmakefile

    r1245 r1253  
    1313 CPPFLAGS += -DG4DEBUG_VIS_OGL
    1414
    15 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_1
    16 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_2
    17 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_3
     15#CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_2
    1816
    1917GLOBLIBS  = libG4vis_management.lib libG4modeling.lib libG4gl2ps.lib
     
    2624include $(G4INSTALL)/config/architecture.gmk
    2725include $(G4INSTALL)/config/G4VIS_BUILD.gmk
     26include $(G4INSTALL)/config/G4UI_BUILD.gmk
    2827include $(G4INSTALL)/config/interactivity.gmk
    2928
  • trunk/source/visualization/OpenGL/History

    r1245 r1253  
    1 $Id: History,v 1.166 2010/04/27 15:59:10 lgarnier Exp $
     1$Id: History,v 1.167 2010/04/30 13:18:32 lgarnier Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
     19
     2029th April 2010 Laurent Garnier
     21 - G4OpenGLSceneHandler : Speed Improvment by drawing vector of
     22   markers instead one by one
     23
    192427th April 2010 Laurent Garnier
    2025 - G4OpenGLStoredXmViewer : remove viewer form list at destruction
  • trunk/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh

    r1242 r1253  
    2525//
    2626//
    27 // $Id: G4OpenGLSceneHandler.hh,v 1.27 2009/10/21 15:18:14 allison Exp $
     27// $Id: G4OpenGLSceneHandler.hh,v 1.28 2010/04/30 13:18:32 lgarnier Exp $
    2828// GEANT4 tag $Name:  $
    2929//
     
    106106
    107107  void AddCircleSquare (const G4VMarker&, G4OpenGLBitMapStore::Shape);
    108   void AddCircleSquares (std::vector <G4VMarker>, G4OpenGLBitMapStore::Shape);
     108  void AddCircleSquareVector (std::vector <G4VMarker>, G4OpenGLBitMapStore::Shape);
    109109
    110110  void DrawXYPolygon
  • trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r1242 r1253  
    5252#include "G4UnitsTable.hh"
    5353#include "G4Qt.hh"
     54#include "G4UIQt.hh"
    5455#include "G4UImanager.hh"
    5556#include "G4UIcommandTree.hh"
     57#include "G4VBasicShell.hh"
    5658#include <qlayout.h>
    5759#include <qdialog.h>
     
    125127
    126128  // return false if G4UIQt was not launch
    127   bool isTabbedView = interactorManager->AddTabWidget(fWindow,name,getWinWidth(),getWinHeight());
     129
     130  G4UImanager* UI = G4UImanager::GetUIpointer();
     131#ifdef G4DEBUG_VIS_OGL
     132  printf("G4OpenGLQtViewer::CreateMainWindow UI:%d\n",UI);
     133#endif
     134  if (UI == NULL) return;
     135
     136#ifdef G4DEBUG_VIS_OGL
     137  G4UIQt * uiQt2 =  static_cast<G4UIQt*> (UI->GetG4UIWindow());
     138  printf("G4UIQt:: recheck Session : %d UImanager:%d\n",uiQt2,UI);
     139#endif
     140
     141
     142  if (! static_cast<G4UIQt*> (UI->GetG4UIWindow())) {
     143#ifdef G4DEBUG_VIS_OGL
     144    printf("G4OpenGLQtViewer::CreateMainWindow return cast WRONG\n");
     145#endif
     146    return;
     147  }
     148  G4UIQt * uiQt = static_cast<G4UIQt*> (UI->GetG4UIWindow());
     149#ifdef G4DEBUG_VIS_OGL
     150  printf("G4OpenGLQtViewer::CreateMainWindow :: G4UIQt:%d UImanager:%d\n",uiQt,UI);
     151#endif
     152 
     153//   if (! dynamic_cast<G4VBasicShell*> (session)) {
     154//     G4VBasicShell * b = (G4VBasicShell*) session;
     155//     if (! static_cast<G4UIQt*> (b)) {
     156//       return;
     157//     }
     158//   }
     159
     160//   G4UIQt * uiQt = (dynamic_cast<G4UIQt*> (dynamic_cast<G4VBasicShell*> (UI)))->GetSession();
     161  bool isTabbedView = uiQt->AddTabWidget(fWindow,name,getWinWidth(),getWinHeight());
    128162
    129163  if (!isTabbedView) { // we have to do a dialog
    130 
     164   
    131165    QWidget *myParent = getParentWidget();
    132166#ifdef G4DEBUG_VIS_OGL
  • 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);
  • trunk/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc

    r1196 r1253  
    2525//
    2626//
    27 // $Id: G4OpenGLStoredXmViewer.cc,v 1.25 2009/04/08 16:55:44 lgarnier Exp $
     27// $Id: G4OpenGLStoredXmViewer.cc,v 1.26 2010/04/30 13:18:32 lgarnier Exp $
    2828// GEANT4 tag $Name:  $
    2929//
Note: See TracChangeset for help on using the changeset viewer.