Changeset 1122 for trunk/source/visualization/OpenGL
- Timestamp:
- Oct 8, 2009, 11:05:25 AM (15 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh
r1121 r1122 73 73 private: 74 74 void ComputeView (); 75 75 GLuint box; 76 76 // QImage glBufferImage; 77 77 }; -
trunk/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc
r1121 r1122 33 33 34 34 #ifdef G4VIS_BUILD_OPENGLQT_DRIVER 35 #define QT_STORE_46_DBG 135 //#define QT_STORE_46_DBG 1 36 36 37 37 #include "G4VViewer.hh" -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r1121 r1122 1436 1436 printf("G4OpenGLQtViewer::FinishView\n"); 1437 1437 #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 (); 1440 1448 } 1441 1449 -
trunk/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc
r1121 r1122 92 92 93 93 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 95 143 96 144 } … … 146 194 #ifdef QT_STORE_46_DBG_COMPUTE 147 195 void 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 206 void 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 292 void 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 327 void 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 352 void 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 148 362 glBegin(GL_QUADS); 149 363 //carré rouge … … 190 404 glVertex3d(0,9,9); 191 405 glEnd(); 192 }193 #else194 void G4OpenGLStoredQtViewer::ComputeView () {195 196 #ifdef G4DEBUG_VIS_OGL197 printf("G4OpenGLStoredQtViewer::ComputeView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",getWinWidth(), getWinHeight());198 #endif199 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 in206 // /vis/viewer/rebuild, but if not, make decision and set flag only207 // 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_OGL218 printf("G4OpenGLStoredQtViewer::ComputeView DANS LE IF\n");219 #endif220 221 HaloingFirstPass ();222 DrawDisplayLists ();223 #ifdef G4DEBUG_VIS_OGL224 printf("glFlush () G4OpenGLStoredQtViewer\n ");225 #endif226 glFlush ();227 228 HaloingSecondPass ();229 230 DrawDisplayLists ();231 FinishView ();232 233 } else {234 235 // If kernel visit was needed, drawing and FinishView will already236 // have been done, so...237 if (!kernelVisitWasNeeded) {238 #ifdef G4DEBUG_VIS_OGL239 printf("************************** G4OpenGLStoredQtViewer::ComputeView Don't need kernel Visit \n");240 #endif241 DrawDisplayLists ();242 FinishView ();243 } else {244 #ifdef G4DEBUG_VIS_OGL245 printf("************************** G4OpenGLStoredQtViewer::ComputeView need kernel Visit \n");246 #endif247 // However, union cutaways are implemented in DrawDisplayLists, so make248 // an extra pass...249 if (fVP.IsCutaway() &&250 fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) {251 ClearView();252 DrawDisplayLists ();253 FinishView ();254 #ifdef G4DEBUG_VIS_OGL255 printf("*************************** CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");256 #endif257 } else { // ADD TO AVOID KernelVisit=1 and nothing to display258 DrawDisplayLists ();259 FinishView ();260 }261 }262 }263 264 if (isRecording()) {265 savePPMToTemp();266 }267 268 #ifdef G4DEBUG_VIS_OGL269 printf("G4OpenGLStoredQtViewer::ComputeView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",getWinWidth(), getWinHeight());270 #endif271 fHasToRepaint =true;272 }273 #endif274 275 276 /**277 - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements278 */279 #ifdef QT_STORE_46_DBG_RESIZE280 void G4OpenGLStoredQtViewer::resizeGL(281 int aWidth282 ,int aHeight)283 {284 #ifdef G4DEBUG_VIS_OGL285 printf("G4OpenGLStoredQtViewer::resizeGL\n");286 #endif287 // Set new size, it will be update when next Repaint()->SetView() called288 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 Window300 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 #else315 void G4OpenGLStoredQtViewer::resizeGL(316 int aWidth317 ,int aHeight)318 {319 #ifdef G4DEBUG_VIS_OGL320 printf("G4OpenGLStoredQtViewer::resizeGL\n");321 #endif322 // Set new size, it will be update when next Repaint()->SetView() called323 324 ResizeWindow(aWidth,aHeight);325 326 327 328 SetView(); // en test .......................329 // ResizeGLView(); // en test .......................330 331 332 333 334 fHasToRepaint = sizeHasChanged();335 }336 #endif337 338 339 #ifdef QT_STORE_46_DBG_PAINT340 void G4OpenGLStoredQtViewer::paintGL()341 {342 #ifdef G4DEBUG_VIS_OGL343 printf("G4OpenGLStoredQtViewer::paintGL\n");344 #endif345 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é rouge352 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é vert358 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é vert364 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é bleu370 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é bleu376 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é blanc382 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é rouge388 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();394 406 } 395 407 … … 472 484 void G4OpenGLStoredQtViewer::updateQWidget() { 473 485 fHasToRepaint= true; 486 #ifdef G4DEBUG_VIS_OGL 487 printf("G4OpenGLStoredQtViewer::updateQWidget\n"); 488 #endif 474 489 updateGL(); 475 490 fHasToRepaint= false;
Note: See TracChangeset
for help on using the changeset viewer.