Changeset 1253 for trunk/source/visualization/OpenGL
- Timestamp:
- May 19, 2010, 5:11:38 PM (14 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/GNUmakefile
r1245 r1253 13 13 CPPFLAGS += -DG4DEBUG_VIS_OGL 14 14 15 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_1 16 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_2 17 CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_3 15 #CPPFLAGS += -DG4VIS_BUILD_OPTIMISE_2 18 16 19 17 GLOBLIBS = libG4vis_management.lib libG4modeling.lib libG4gl2ps.lib … … 26 24 include $(G4INSTALL)/config/architecture.gmk 27 25 include $(G4INSTALL)/config/G4VIS_BUILD.gmk 26 include $(G4INSTALL)/config/G4UI_BUILD.gmk 28 27 include $(G4INSTALL)/config/interactivity.gmk 29 28 -
trunk/source/visualization/OpenGL/History
r1245 r1253 1 $Id: History,v 1.16 6 2010/04/27 15:59:10lgarnier Exp $1 $Id: History,v 1.167 2010/04/30 13:18:32 lgarnier Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 29th April 2010 Laurent Garnier 21 - G4OpenGLSceneHandler : Speed Improvment by drawing vector of 22 markers instead one by one 23 19 24 27th April 2010 Laurent Garnier 20 25 - G4OpenGLStoredXmViewer : remove viewer form list at destruction -
trunk/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh
r1242 r1253 25 25 // 26 26 // 27 // $Id: G4OpenGLSceneHandler.hh,v 1.2 7 2009/10/21 15:18:14 allisonExp $27 // $Id: G4OpenGLSceneHandler.hh,v 1.28 2010/04/30 13:18:32 lgarnier Exp $ 28 28 // GEANT4 tag $Name: $ 29 29 // … … 106 106 107 107 void AddCircleSquare (const G4VMarker&, G4OpenGLBitMapStore::Shape); 108 void AddCircleSquare s(std::vector <G4VMarker>, G4OpenGLBitMapStore::Shape);108 void AddCircleSquareVector (std::vector <G4VMarker>, G4OpenGLBitMapStore::Shape); 109 109 110 110 void DrawXYPolygon -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r1242 r1253 52 52 #include "G4UnitsTable.hh" 53 53 #include "G4Qt.hh" 54 #include "G4UIQt.hh" 54 55 #include "G4UImanager.hh" 55 56 #include "G4UIcommandTree.hh" 57 #include "G4VBasicShell.hh" 56 58 #include <qlayout.h> 57 59 #include <qdialog.h> … … 125 127 126 128 // 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()); 128 162 129 163 if (!isTabbedView) { // we have to do a dialog 130 164 131 165 QWidget *myParent = getParentWidget(); 132 166 #ifdef G4DEBUG_VIS_OGL -
trunk/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc
r1242 r1253 25 25 // 26 26 // 27 // $Id: G4OpenGLSceneHandler.cc,v 1.5 6 2009/10/21 15:18:43 allisonExp $27 // $Id: G4OpenGLSceneHandler.cc,v 1.57 2010/04/30 13:18:32 lgarnier Exp $ 28 28 // GEANT4 tag $Name: $ 29 29 // … … 198 198 void G4OpenGLSceneHandler::AddPrimitive (const G4Polymarker& polymarker) 199 199 { 200 #ifdef G4DEBUG_VIS_OGL201 // printf("G4OpenGLSceneHandler::AddPrimitive polymarker");202 #endif203 200 G4int nPoints = polymarker.size (); 204 201 if (nPoints <= 0) return; … … 217 214 case G4Polymarker::dots: 218 215 { 219 #ifdef G4DEBUG_VIS_OGL220 // printf(" dots ");221 #endif222 216 for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) { 223 217 G4Circle dot (polymarker); … … 231 225 case G4Polymarker::circles: 232 226 { 233 #ifdef G4DEBUG_VIS_OGL234 // printf(" circle ");235 #endif236 #ifdef G4VIS_BUILD_OPTIMISE_3237 227 std::vector <G4VMarker> circleV; 238 // FIXME, must check attribute before doing a list239 #endif240 228 for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) { 241 229 G4Circle circle (polymarker); 242 230 // If not already drawn 243 231 circle.SetPosition (polymarker[iPoint]); 244 #ifdef G4VIS_BUILD_OPTIMISE_3245 232 circleV.push_back(circle); 246 #endif 247 } 248 #ifdef G4VIS_BUILD_OPTIMISE_3 233 // G4OpenGLSceneHandler::AddPrimitive (circle); 234 } 249 235 G4OpenGLSceneHandler::AddPrimitives (circleV); 250 #endif251 236 } 252 237 break; 253 238 case G4Polymarker::squares: 254 239 { 255 #ifdef G4DEBUG_VIS_OGL256 // printf(" square ");257 #endif258 #ifdef G4VIS_BUILD_OPTIMISE_3259 240 std::vector <G4VMarker> squareV; 260 // FIXME, must check attribute before doing a list261 #endif262 241 for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) { 263 242 G4Square square (polymarker); 264 243 square.SetPosition (polymarker[iPoint]); 265 #ifdef G4VIS_BUILD_OPTIMISE_3266 244 squareV.push_back(square); 267 #endif 268 } 269 #ifdef G4VIS_BUILD_OPTIMISE_3 245 // G4OpenGLSceneHandler::AddPrimitive (square); 246 } 270 247 G4OpenGLSceneHandler::AddPrimitives (squareV); 271 #endif272 248 } 273 249 break; 274 250 } 275 251 276 #ifdef G4DEBUG_VIS_OGL277 // printf(" \n");278 #endif279 252 fProcessingPolymarker = false; 280 253 } … … 340 313 void G4OpenGLSceneHandler::AddPrimitives (std::vector <G4VMarker> square) { 341 314 glDisable (GL_POINT_SMOOTH); 342 AddCircleSquare s(square, G4OpenGLBitMapStore::square);315 AddCircleSquareVector (square, G4OpenGLBitMapStore::square); 343 316 } 344 317 … … 347 320 G4OpenGLBitMapStore::Shape shape) { 348 321 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 327 void G4OpenGLSceneHandler::AddCircleSquareVector 445 328 (std::vector <G4VMarker> marker, 446 329 G4OpenGLBitMapStore::Shape shape) { … … 462 345 463 346 if (fpViewer -> GetViewParameters ().IsMarkerNotHidden ()) { 464 #ifdef G4DEBUG_VIS_OGL465 // printf("+");466 #endif467 347 glDisable (GL_DEPTH_TEST); 468 348 } 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 } 473 351 474 352 glDisable (GL_LIGHTING); -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc
r1196 r1253 25 25 // 26 26 // 27 // $Id: G4OpenGLStoredXmViewer.cc,v 1.2 5 2009/04/08 16:55:44lgarnier Exp $27 // $Id: G4OpenGLStoredXmViewer.cc,v 1.26 2010/04/30 13:18:32 lgarnier Exp $ 28 28 // GEANT4 tag $Name: $ 29 29 //
Note: See TracChangeset
for help on using the changeset viewer.