Changeset 2800 for GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
- Timestamp:
- 06/27/08 01:43:45 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
r2797 r2800 57 57 int maxBatchSize = 50; 58 58 59 int trianglesPerVirtualLeaf = 1000;59 int trianglesPerVirtualLeaf = INITIAL_TRIANGLES_PER_VIRTUAL_LEAVES; 60 60 61 61 SceneQuery *sceneQuery = NULL; … … 83 83 int queryCulledNodes = 0; 84 84 int stateChanges = 0; 85 int numBatches = 0; 85 86 86 87 bool showHelp = false; … … 98 99 bool useRenderQueue = true; 99 100 bool useMultiQueries = true; 101 102 bool flyMode = true; 100 103 101 104 /// the accumulated z axis rotation … … 233 236 visualization = new Visualization(bvh, camera, NULL, &state); 234 237 235 //sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 238 sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 239 236 240 237 241 glutMainLoop(); … … 270 274 glEnable(GL_CULL_FACE); 271 275 //glDisable(GL_CULL_FACE); 272 276 glDisable(GL_TEXTURE_2D); 273 277 274 278 GLfloat ambientColor[] = {0.5, 0.5, 0.5, 1.0}; … … 292 296 "'F3' - shows/hides bounds (boxes or tight bounds)", 293 297 "'F4' - shows/hides statistics", 294 "'F5', - shows/hides parameters", 298 "'F5', - toggles between fly / walkmode", 299 "'F6', - shows/hides parameters", 295 300 "'SPACE' - cycles through occlusion culling algorithms", 296 301 "", … … 390 395 glEnable(GL_LIGHTING); 391 396 glEnable(GL_LIGHT0); 392 glEnable(GL_LIGHT1); 397 //glEnable(GL_LIGHT1); 398 glDisable(GL_LIGHT1); 393 399 394 400 //GLfloat ambient[] = {0.5, 0.5, 0.5, 1.0}; … … 424 430 425 431 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); 426 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);427 //glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE);432 //glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); 433 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); 428 434 //glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SEPARATE_SPECULAR_COLOR_EXT); 429 435 glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SINGLE_COLOR_EXT); 430 431 } 436 } 437 432 438 433 439 void SetupEyeView() … … 476 482 void Display() 477 483 { 484 Vector3 oldPos = camera->GetPosition(); 485 478 486 PerfTimer frameTimer; 479 480 487 frameTimer.Start(); 481 488 … … 493 500 KeyVerticalMotion(KeyShift()); 494 501 495 496 502 Vector3 playerPos = camera->GetPosition(); 497 //sceneQuery->CalcIntersection(playerPos); 503 504 if (!flyMode) 505 { 506 Vector3 playerPos = camera->GetPosition(); 507 508 bool validIntersect = sceneQuery->CalcIntersection(playerPos); 509 510 if (validIntersect && 511 (( playerPos.z - oldPos.z) < bvh->GetBox().Size(2) * 1e-1f)) 512 { 498 513 camera->SetPosition(playerPos); 514 } 515 } 499 516 500 517 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); … … 532 549 break; 533 550 case 32: //space 534 renderMode = (renderMode + 1) % RenderTraverser::NUM_ RENDERMODES;551 renderMode = (renderMode + 1) % RenderTraverser::NUM_TRAVERSAL_TYPES; 535 552 ResetTraverser(); 536 553 break; … … 563 580 break; 564 581 case '8': 565 {566 582 eightKeyPressed = true; 567 KeyVerticalMotion(-KeyShift());568 583 break; 569 }570 584 case '9': 571 {572 585 nineKeyPressed = true; 573 KeyVerticalMotion(+KeyShift());574 586 break; 575 }576 587 case 'o': 577 588 case 'O': … … 581 592 case 'a': 582 593 case 'A': 583 {584 594 leftKeyPressed = true; 585 camera->Pitch(KeyRotationAngle());586 }587 595 break; 588 596 case 'd': 589 597 case 'D': 590 {591 598 rightKeyPressed = true; 592 camera->Pitch(-KeyRotationAngle());593 }594 599 break; 595 600 case 'w': 596 601 case 'W': 597 {598 602 upKeyPressed = true; 599 KeyHorizontalMotion(KeyShift());600 }601 603 break; 602 604 case 'x': 603 605 case 'X': 604 {605 606 downKeyPressed = true; 606 KeyHorizontalMotion(-KeyShift());607 }608 607 break; 609 608 case 'r': … … 716 715 case GLUT_KEY_F5: 717 716 showOptions = !showOptions; 717 break; 718 case GLUT_KEY_F6: 719 flyMode = !flyMode; 718 720 break; 719 721 case GLUT_KEY_LEFT: … … 1004 1006 if (numbers.size() > 0) 1005 1007 { 1006 sprintf _s(hstr, "%d", numbers.back());1008 sprintf(hstr, "%d", numbers.back()); 1007 1009 str.append(hstr); 1008 1010 } … … 1010 1012 for (int i = (int)numbers.size() - 2; i >= 0; i--) 1011 1013 { 1012 sprintf _s(hstr, ",%03d", numbers[i]);1014 sprintf(hstr, ",%03d", numbers[i]); 1013 1015 str.append(hstr); 1014 1016 } … … 1050 1052 issuedQueries = traverser->GetStats().mNumIssuedQueries; 1051 1053 stateChanges = traverser->GetStats().mNumStateChanges; 1052 } 1053 1054 sprintf_s(msg2, "assumed visible frames: %4d, max batch size: %4d", 1054 numBatches = traverser->GetStats().mNumBatches; 1055 } 1056 1057 sprintf(msg2, "assumed visible frames: %4d, max batch size: %4d", 1055 1058 assumedVisibleFrames, maxBatchSize); 1056 1059 1057 sprintf _s(msg3, "render queue: %d, multiqueries: %d, tight bounds: %d",1060 sprintf(msg3, "render queue: %d, multiqueries: %d, tight bounds: %d", 1058 1061 useRenderQueue, useMultiQueries, useTightBounds); 1059 1062 … … 1064 1067 CalcDecimalPoint(str2, bvh->GetBvhStats().mTriangles); 1065 1068 1066 sprintf _s(msg4, "rendered nodes: %6d (of %6d), rendered triangles: %s (of %s)",1069 sprintf(msg4, "rendered nodes: %6d (of %6d), rendered triangles: %s (of %s)", 1067 1070 renderedNodes, bvh->GetNumVirtualNodes(), str.c_str(), str2.c_str()); 1068 1071 1069 sprintf _s(msg5, "traversed: %5d, frustum culled: %5d, query culled: %5d",1072 sprintf(msg5, "traversed: %5d, frustum culled: %5d, query culled: %5d", 1070 1073 traversedNodes, frustumCulledNodes, queryCulledNodes); 1071 1074 1072 sprintf _s(msg6, "issued queries: %5d, state changes: %5d", issuedQueries, stateChanges);1073 1074 sprintf _s(msg8, "triangles per virtual leaf: %5d", trianglesPerVirtualLeaf);1075 1076 sprintf _s(msg7, "fps: %6.1f", fps);1075 sprintf(msg6, "issued queries: %5d, state changes: %5d, render batches: %5d", issuedQueries, stateChanges, numBatches); 1076 1077 sprintf(msg8, "triangles per virtual leaf: %5d", trianglesPerVirtualLeaf); 1078 1079 sprintf(msg7, "fps: %6.1f", fps); 1077 1080 1078 1081 … … 1085 1088 else 1086 1089 { 1087 glColor3f(1.0f, 1.0f, 1.0f); 1090 // glColor3f(1.0f, 1.0f, 1.0f); 1091 glColor3f(1.0f, 0.0f, 0.0f); 1088 1092 Output(850, 30, msg[renderMode]); 1089 1093
Note: See TracChangeset
for help on using the changeset viewer.