Ignore:
Timestamp:
06/14/08 05:43:39 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r2758 r2759  
    3434float nearDist = 0.1f;  
    3535int winWidth, winHeight; 
     36float winAspectRatio = 1.0f; 
    3637 
    3738float visZoomFactor = 1.5f; 
     
    4849Vector3 lightDir = Vector3(0.0f, 0.0f, 1.0f);  // light dir  
    4950 
    50 Matrix4x4 eyeView; // eye view matrix 
    51 Matrix4x4 eyeProjection; // eye projection matrix 
    52 Matrix4x4 eyeProjView; //= eyeProjection*eyeView 
    53 Matrix4x4 invEyeProjView; //= eyeProjView^(-1) 
    5451Matrix4x4 visView; // visualisation view matrix 
    5552 
     
    5855//int renderMode = RenderTraverser::RENDER_COHERENT; 
    5956 
    60 // relative size of an object 
    61 float objectSize = 3.5f; 
    62  
    63 int numObjects = 2000; 
    64 int numNextObjects = numObjects; 
    65 float zLength = 30.0f; 
    66  
    67 // this defines the volume where objects can be drawn 
    68 Vector3 minTranslation(-2.5f, -2.5f, -3.0f); 
    69 Vector3 maxTranslation(2.5f, 2.5f, -3.0 - zLength); 
    70  
    71 const float minAngle = 0; 
    72 const float maxAngle = 360; 
    7357 
    7458const int renderTimeSize = 100; 
     
    8468Vector3 spec[2]; 
    8569 
    86 void InitExtensions(void); 
     70void InitExtensions(); 
    8771void DisplayVisualization(); 
    88 void InitGLstate(void); 
    89 void CleanUp(void); 
    90 void SetupEyeView(void); 
    91 void UpdateEyeMtx(void); 
    92  
    93  
    94 void begin2D(void); 
    95 void end2D(void); 
     72void InitGLstate(); 
     73void CleanUp(); 
     74void SetupEyeView(); 
     75void UpdateEyeMtx(); 
     76void SetupLighting(); 
     77 
     78void begin2D(); 
     79void end2D(); 
    9680void output(int x, int y, const char *string); 
    97 void keyboard(const unsigned char c, int x, int y); 
    98 void drawHelpMessage(void); 
    99 void drawStatistics(void); 
     81void keyboard(unsigned char c, int x, int y); 
     82void drawHelpMessage(); 
     83void drawStatistics(); 
    10084void display(void); 
    10185void special(int c, int x, int y); 
     
    140124 
    141125        //const string filename("house_test.dem"); 
    142         const string filename("city.dem"); 
     126        const string filename("city_demo.dem"); 
    143127 
    144128        if (loader.Load(filename, sceneEntities)) 
     
    154138                sceneBox.Include((*it)->GetBoundingBox()); 
    155139 
    156         Debug << "scene box: " << sceneBox << endl; 
     140        cout << "scene box: " << sceneBox << endl; 
     141 
    157142 
    158143        //SetupProjection(800, 600, 60, sceneBox); 
     
    177162void InitGLstate(void)  
    178163{ 
    179         glClearColor(0.0f, 1.0f, 0.0f, 0.0); 
     164        glClearColor(0.0f, 0.0f, 0.0f, 0.0); 
    180165         
    181166        glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
     
    184169        glDepthFunc(GL_LESS); 
    185170 
    186         glEnable(GL_LIGHTING); 
    187         glEnable(GL_LIGHT0); 
    188         //glDisable(GL_LIGHTING); 
     171        SetupLighting(); 
    189172 
    190173        glColor3f(1.0f, 0.0f, 0.0f); 
    191174        glShadeModel(GL_SMOOTH); 
    192175         
    193         GLfloat ambient[] = {0.5, 0.5, 0.5, 1.0}; 
    194         GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; 
    195         GLfloat specular[] = {1.0, 1.0, 1.0, 1.0}; 
    196         GLfloat position[] = {0.0, 3.0, 3.0, 0.0}; 
    197      
    198         GLfloat lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0}; 
    199         GLfloat local_view[] = {0.0}; 
    200  
    201         glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); 
    202         glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); 
    203         glLightfv(GL_LIGHT0, GL_POSITION, position); 
    204          
    205         glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); 
    206         glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); 
    207  
     176         
    208177        glMaterialf(GL_FRONT, GL_SHININESS, 64); 
    209178        glEnable(GL_NORMALIZE); 
     
    216185        GLfloat ambientColor[] = {0.5, 0.5, 0.5, 1.0}; 
    217186        GLfloat diffuseColor[] = {1.0, 0.0, 0.0, 1.0}; 
    218         GLfloat specularColor[] = {1.0, 1.0, 1.0, 1.0}; 
     187        GLfloat specularColor[] = {0.0, 0.0, 0.0, 1.0}; 
    219188 
    220189        glMaterialfv(GL_FRONT, GL_AMBIENT, ambientColor); 
     
    297266 
    298267 
    299 void UpdateEyeMtx(void)  
    300 { 
    301         /*const Vector3 up(0.0, 1.0, 0.0); 
    302  
    303         look(eyeView, eyePos, viewDir, up); 
    304         mult(eyeProjView, eyeProjection, eyeView); //eyeProjView = eyeProjection*eyeView 
    305         invert(invEyeProjView, eyeProjView); //invert matrix 
    306         */ 
    307 } 
    308  
     268void SetupLighting() 
     269{ 
     270        glEnable(GL_LIGHTING); 
     271        glEnable(GL_LIGHT0); 
     272        glEnable(GL_LIGHT1); 
     273        //glDisable(GL_LIGHT1); 
     274        //glDisable(GL_LIGHTING); 
     275 
     276        //GLfloat ambient[] = {0.5, 0.5, 0.5, 1.0}; 
     277        GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0}; 
     278        GLfloat diffuse[] = {1.0, 1.0, 1.0, 1.0}; 
     279        GLfloat specular[] = {1.0, 1.0, 1.0, 1.0}; 
     280             
     281        //GLfloat lmodel_ambient[] = {0.5f, 0.5f, 0.5f, 1.0}; 
     282        GLfloat lmodel_ambient[] = {0.2f, 0.2f, 0.2f, 1.0f}; 
     283 
     284        glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); 
     285        glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); 
     286        glLightfv(GL_LIGHT0, GL_SPECULAR, specular); 
     287 
     288        GLfloat position[] = {0.0, 3.0, 3.0, 0.0}; 
     289        glLightfv(GL_LIGHT0, GL_POSITION, position); 
     290 
     291 
     292        //////////// 
     293        //-- second light 
     294 
     295        GLfloat ambient1[] = {0.2, 0.2, 0.2, 1.0}; 
     296        GLfloat diffuse1[] = {0.5, 0.5, 0.5, 1.0}; 
     297        GLfloat specular1[] = {0.0, 0.0, 0.0, 1.0}; 
     298 
     299        glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); 
     300        glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); 
     301        glLightfv(GL_LIGHT1, GL_SPECULAR, specular1); 
     302         
     303        GLfloat position1[] = {0.0, 1.0, 0.0, 1.0}; 
     304        glLightfv(GL_LIGHT1, GL_POSITION, position1); 
     305 
     306        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); 
     307        glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); 
     308        //glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); 
     309        //glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SEPARATE_SPECULAR_COLOR_EXT); 
     310        glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SINGLE_COLOR_EXT); 
     311 
     312} 
    309313 
    310314void SetupEyeView(void) 
    311315{ 
    312         //SetupProjection(800,600,60,sceneBox); 
     316         
     317        glMatrixMode(GL_PROJECTION); 
     318        glLoadIdentity(); 
     319 
     320        gluPerspective(60.0f, 1.0f / winAspectRatio, nearDist, 2.0f * Magnitude(sceneBox.Diagonal())); 
     321 
    313322        glMatrixMode(GL_MODELVIEW); 
     323        glLoadIdentity();        
     324 
     325        GLfloat position[] = {0.0f, 3.0f, 3.0f, 0.0f}; 
     326        glLightfv(GL_LIGHT0, GL_POSITION, position); 
     327 
     328        GLfloat position1[] = {sceneBox.Center().x, sceneBox.Center().y, sceneBox.Center().z, 1.0f}; 
     329        glLightfv(GL_LIGHT1, GL_POSITION, position1); 
     330 
    314331        camera->SetupCameraView(); 
    315332 
    316 /*      glMatrixMode(GL_PROJECTION); 
    317         glLoadMatrixf((float *)eyeProjection.x); 
    318  
    319         glMatrixMode(GL_MODELVIEW); 
    320         glLoadMatrixf((float *)eyeView.x); 
    321         */ 
     333 
    322334} 
    323335 
     
    336348        char msg8[100]; 
    337349 
    338 /* 
    339         sprintf_s(msg2, "Traversed: %4d, frustum culled: %4d, query culled: %4d (of %d nodes)", 
     350 
     351        /*sprintf_s(msg2, "Traversed: %4d, frustum culled: %4d, query culled: %4d (of %d nodes)", 
    340352                        traverser.GetNumTraversedNodes(), traverser.GetNumFrustumCulledNodes(), 
    341353                        traverser.GetNumQueryCulledNodes(),  
    342354                        traverser.GetHierarchy()->GetNumHierarchyNodes()); 
    343  
     355*/ 
    344356        char *optstr[2] = {"", ", using optimization"}; 
    345         char *querystr[2] = {"NV", "ARB"}; 
    346  
     357         
    347358        float fps = 1e3f; 
    348359        long renderTime = calcRenderTime(); 
    349         if (renderTime) fps = 1e6f / (float)calcRenderTime(); 
    350  
    351         sprintf_s(msg3, "Threshold: %4d, algorithm rendering time: %ld ms (%3.3f fps), queries: %s%s",  
    352                 traverser.GetVisibilityThreshold(), renderTime / 1000, fps, querystr[useArbQueries], optstr[useOptimization]); 
     360        if (renderTime) fps = 1e3f / (float)renderTime; 
     361 
     362        //sprintf_s(msg3, "Threshold: %4d, algorithm rendering time: %ld ms (%3.3f fps), queries: %s",  
     363        //      traverser.GetVisibilityThreshold(), renderTime / 1000, fps, optstr[useOptimization]); 
     364        sprintf_s(msg3, "render time: %ld ms (%3.3f fps), queries: %s",  renderTime, fps, optstr[useOptimization]); 
    353365 
    354366        string str; 
    355367        string str2; 
    356368 
    357         calcDecimalPoint(str, Geometry::CountTriangles(objectType) * traverser.GetNumRenderedGeometry()); 
     369        /*calcDecimalPoint(str, Geometry::CountTriangles(objectType) * traverser.GetNumRenderedGeometry()); 
    358370        calcDecimalPoint(str2, Geometry::CountTriangles(objectType) * numObjects); 
    359371 
    360372        sprintf_s(msg4, "Rendered objects %d (of %d), rendered triangles: %s (of %s)",  
    361373                        traverser.GetNumRenderedGeometry(), numObjects, str.c_str(), str2.c_str());  
    362  
    363         sprintf_s(msg5, "Next object num: %d", numNextObjects); 
    364         sprintf_s(msg6, "Next length in z dir: %3.3f", zLength); 
    365          
    366         char *objectTypeStr[3] = {"teapot", "torus", "sphere"}; 
    367  
    368         sprintf_s(msg7, "Next object type: %s", objectTypeStr[nextObjectType]); 
    369         sprintf_s(msg8, "Next object size: %3.3f", objectSize); 
    370374*/ 
     375         
    371376 
    372377        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    373378 
    374379        // bring eye modelview matrix up-to-date 
    375         UpdateEyeMtx();  
    376380        SetupEyeView(); 
     381 
     382        InitTiming(); 
     383 
     384        long t1, t2; 
     385 
     386        t1 = GetTime(); 
    377387 
    378388        glEnableClientState(GL_VERTEX_ARRAY); 
     
    408418        glDisable(GL_TEXTURE_2D); 
    409419        glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
     420         
     421 
     422        t2 = GetTime(); 
     423        long loop_time = TimeDiff(t1, t2); 
     424        //cout<<"t: " << loop_time<<endl; 
    410425 
    411426        /* 
     
    413428        traverser.SetProjViewMatrix(eyeProjView); 
    414429        traverser.Render(renderMode); 
     430        */ 
     431 
    415432        // cycle through rendertime array 
    416         renderTimes[renderTimesIdx] = traverser.GetRenderTime(); 
     433        renderTimes[renderTimesIdx] = loop_time;// traverser.GetRenderTime(); 
    417434        renderTimesIdx = (renderTimesIdx + 1) % renderTimeSize; 
    418435 
     
    420437                renderTimesValid = renderTimesIdx; 
    421438 
    422         if(visMode) 
    423                 displayVisualization(); 
    424         */ 
     439        //if(visMode) displayVisualization(); 
     440         
    425441 
    426442         
     
    445461                                output(10, winHeight-90,  msg5); 
    446462                        } 
     463 
    447464                        output(10, winHeight-70, msg3); 
    448                         output(10, winHeight-50, msg4); 
    449                         output(10, winHeight-30, msg2); 
     465                        //output(10, winHeight-50, msg4); 
     466                        //output(10, winHeight-30, msg2); 
    450467                } 
    451468        } 
     
    469486                break; 
    470487        case 32: //space 
    471          
    472                 //      renderMode = (renderMode + 1) % RenderTraverser::NUM_RENDERMODES; 
    473                  
     488                // renderMode = (renderMode + 1) % RenderTraverser::NUM_RENDERMODES; 
    474489                resetTimer(); 
    475490                //traverser.Render(renderMode);         // render once so stats are updated 
     
    568583                break; 
    569584        case GLUT_KEY_F4: 
    570                 zLength -= 1; 
    571                 if(zLength < 0) zLength = 0; 
     585                //zLength -= 1; 
     586                //if(zLength < 0) zLength = 0; 
    572587                break; 
    573588        case GLUT_KEY_F5: 
    574                 zLength += 1; 
     589                //zLength += 1; 
    575590                break;           
    576591        case GLUT_KEY_F6: 
    577                 objectSize -= 0.1; 
    578                 if(objectSize < 0.1) objectSize = 0.1; 
     592                //objectSize -= 0.1; 
     593                //if(objectSize < 0.1) objectSize = 0.1; 
    579594                break; 
    580595        case GLUT_KEY_F7: 
    581                 objectSize += 0.1; 
     596                //objectSize += 0.1; 
    582597                break; 
    583598        case GLUT_KEY_F8: 
     
    608623void reshape(const int w, const int h)  
    609624{ 
    610         double winAspectRatio = 1.0; 
     625        winAspectRatio = 1.0f; 
    611626 
    612627        glViewport(0, 0, w, h); 
     
    615630        winHeight = h; 
    616631 
    617         if (w) winAspectRatio = (double) h / (double) w; 
     632        if (w) winAspectRatio = (float) h / (float) w; 
    618633 
    619634        glMatrixMode(GL_PROJECTION); 
    620635        glLoadIdentity(); 
    621636 
    622         gluPerspective(60.0f, 1.0f / winAspectRatio, nearDist, 2.0 * Magnitude(sceneBox.Diagonal())); 
     637        gluPerspective(60.0f, 1.0f / winAspectRatio, nearDist, 2.0f * Magnitude(sceneBox.Diagonal())); 
    623638        glMatrixMode(GL_MODELVIEW); 
    624  
    625         //perspectiveDeg(eyeProjection, 60.0, 1.0f/winAspectRatio, nearDist, 150.0); 
    626639 
    627640        glutPostRedisplay(); 
     
    790803                for (i = 0; i < len; i++)  
    791804                { 
    792                         glutBitmapCharacter(GLUT_BITMAP_8_BY_13,string[i]); 
     805                        glutBitmapCharacter(GLUT_BITMAP_8_BY_13, string[i]); 
    793806                } 
    794807        } 
Note: See TracChangeset for help on using the changeset viewer.