Ignore:
Timestamp:
06/27/08 01:43:45 (16 years ago)
Author:
mattausch
Message:

friendly culling debug version with timers, no materials

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2797 r2800  
    5757int maxBatchSize = 50; 
    5858 
    59 int trianglesPerVirtualLeaf = 1000; 
     59int trianglesPerVirtualLeaf = INITIAL_TRIANGLES_PER_VIRTUAL_LEAVES; 
    6060 
    6161SceneQuery *sceneQuery = NULL; 
     
    8383int queryCulledNodes = 0; 
    8484int stateChanges = 0; 
     85int numBatches = 0; 
    8586 
    8687bool showHelp = false; 
     
    9899bool useRenderQueue = true; 
    99100bool useMultiQueries = true; 
     101 
     102bool flyMode = true; 
    100103 
    101104/// the accumulated z axis rotation 
     
    233236        visualization = new Visualization(bvh, camera, NULL, &state); 
    234237 
    235         //sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
     238        sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
     239 
    236240 
    237241        glutMainLoop(); 
     
    270274        glEnable(GL_CULL_FACE); 
    271275        //glDisable(GL_CULL_FACE); 
    272          
     276        glDisable(GL_TEXTURE_2D); 
    273277 
    274278        GLfloat ambientColor[] = {0.5, 0.5, 0.5, 1.0}; 
     
    292296                "'F3'           - shows/hides bounds (boxes or tight bounds)", 
    293297                "'F4'           - shows/hides statistics", 
    294                 "'F5',          - shows/hides parameters", 
     298                "'F5',          - toggles between fly / walkmode", 
     299                "'F6',          - shows/hides parameters", 
    295300                "'SPACE'        - cycles through occlusion culling algorithms", 
    296301                "", 
     
    390395        glEnable(GL_LIGHTING); 
    391396        glEnable(GL_LIGHT0); 
    392         glEnable(GL_LIGHT1); 
     397        //glEnable(GL_LIGHT1); 
     398        glDisable(GL_LIGHT1); 
    393399 
    394400        //GLfloat ambient[] = {0.5, 0.5, 0.5, 1.0}; 
     
    424430 
    425431        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); 
    428434        //glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SEPARATE_SPECULAR_COLOR_EXT); 
    429435        glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SINGLE_COLOR_EXT); 
    430  
    431 } 
     436} 
     437 
    432438 
    433439void SetupEyeView() 
     
    476482void Display()  
    477483{ 
     484        Vector3 oldPos = camera->GetPosition(); 
     485 
    478486        PerfTimer frameTimer; 
    479  
    480487        frameTimer.Start(); 
    481488 
     
    493500                KeyVerticalMotion(KeyShift()); 
    494501 
    495          
    496502        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                { 
    498513        camera->SetPosition(playerPos); 
     514                } 
     515        } 
    499516 
    500517        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     
    532549                break; 
    533550        case 32: //space 
    534                 renderMode = (renderMode + 1) % RenderTraverser::NUM_RENDERMODES; 
     551                renderMode = (renderMode + 1) % RenderTraverser::NUM_TRAVERSAL_TYPES; 
    535552                ResetTraverser(); 
    536553                break; 
     
    563580                break; 
    564581        case '8': 
    565                 { 
    566582                        eightKeyPressed = true; 
    567                         KeyVerticalMotion(-KeyShift()); 
    568583                        break; 
    569                 } 
    570584        case '9': 
    571                 { 
    572585                        nineKeyPressed = true; 
    573                         KeyVerticalMotion(+KeyShift()); 
    574586                        break; 
    575                 }        
    576587        case 'o': 
    577588        case 'O': 
     
    581592        case 'a': 
    582593        case 'A': 
    583                 { 
    584594                        leftKeyPressed = true; 
    585                         camera->Pitch(KeyRotationAngle()); 
    586                 } 
    587595                break; 
    588596        case 'd': 
    589597        case 'D': 
    590         { 
    591598                        rightKeyPressed = true; 
    592                         camera->Pitch(-KeyRotationAngle()); 
    593                 } 
    594599                break; 
    595600        case 'w': 
    596601        case 'W': 
    597                 { 
    598602                        upKeyPressed = true; 
    599                         KeyHorizontalMotion(KeyShift()); 
    600                 } 
    601603                break; 
    602604        case 'x': 
    603605        case 'X': 
    604                 { 
    605606                        downKeyPressed = true; 
    606                         KeyHorizontalMotion(-KeyShift()); 
    607                 } 
    608607                break; 
    609608        case 'r': 
     
    716715        case GLUT_KEY_F5: 
    717716                showOptions = !showOptions; 
     717                break; 
     718        case GLUT_KEY_F6: 
     719                flyMode = !flyMode; 
    718720                break; 
    719721        case GLUT_KEY_LEFT: 
     
    10041006        if (numbers.size() > 0) 
    10051007        { 
    1006                 sprintf_s(hstr, "%d", numbers.back()); 
     1008                sprintf(hstr, "%d", numbers.back()); 
    10071009                str.append(hstr); 
    10081010        } 
     
    10101012        for (int i = (int)numbers.size() - 2; i >= 0; i--) 
    10111013        { 
    1012                 sprintf_s(hstr, ",%03d", numbers[i]); 
     1014                sprintf(hstr, ",%03d", numbers[i]); 
    10131015                str.append(hstr); 
    10141016        } 
     
    10501052                issuedQueries = traverser->GetStats().mNumIssuedQueries; 
    10511053                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",  
    10551058                      assumedVisibleFrames, maxBatchSize); 
    10561059 
    1057         sprintf_s(msg3, "render queue: %d, multiqueries: %d, tight bounds: %d",  
     1060        sprintf(msg3, "render queue: %d, multiqueries: %d, tight bounds: %d",  
    10581061                      useRenderQueue, useMultiQueries, useTightBounds); 
    10591062 
     
    10641067        CalcDecimalPoint(str2, bvh->GetBvhStats().mTriangles); 
    10651068 
    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)",  
    10671070                          renderedNodes, bvh->GetNumVirtualNodes(), str.c_str(), str2.c_str());  
    10681071 
    1069         sprintf_s(msg5, "traversed: %5d, frustum culled: %5d, query culled: %5d", 
     1072        sprintf(msg5, "traversed: %5d, frustum culled: %5d, query culled: %5d", 
    10701073                          traversedNodes, frustumCulledNodes, queryCulledNodes); 
    10711074 
    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); 
    10771080 
    10781081 
     
    10851088        else 
    10861089        { 
    1087                 glColor3f(1.0f, 1.0f, 1.0f); 
     1090        //      glColor3f(1.0f, 1.0f, 1.0f); 
     1091                glColor3f(1.0f, 0.0f, 0.0f); 
    10881092                Output(850, 30, msg[renderMode]); 
    10891093 
Note: See TracChangeset for help on using the changeset viewer.