Ignore:
Timestamp:
01/21/08 16:10:52 (16 years ago)
Author:
bittner
Message:

pixel error fix for renderer buffer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/QtInterface/QtGlRenderer.cpp

    r2619 r2620  
    2121#define USE_CG 1 
    2222 
    23 #define TEST_PVS_RENDERING 1 
     23#define TEST_PVS_RENDERING 0 
    2424 
    2525#if USE_CG 
     
    9191  GlRendererBuffer(sceneGraph, viewcells, tree) 
    9292{ 
     93  mUseVbos = true; 
    9394  MakeCurrent(); 
    9495  InitGL(); 
     
    9697} 
    9798 
     99void 
     100QtGlRendererBuffer::RenderPvs(const ObjectPvs &pvs) 
     101{ 
     102#if TEST_PVS_RENDERING  
     103 
     104  // Render PVS 
     105  ObjectPvsIterator it = pvs.GetIterator(); 
     106   
     107  Intersectable::NewMail(); 
     108  mCurrentFrame++; 
     109  while (it.HasMoreEntries())  
     110        { 
     111          RenderIntersectable(it.Next()); 
     112        } 
     113 
     114#else 
     115   
     116  PreparePvs(pvs); 
     117 
     118  int offset = (int)mObjects.size() * 3; 
     119  char *arrayPtr = mUseVbos ? NULL : (char *)mData; 
     120 
     121  glVertexPointer(3, GL_FLOAT, 0, (char *)arrayPtr); 
     122  glNormalPointer(GL_FLOAT, 0, (char *)arrayPtr + offset * sizeof(Vector3)); 
     123  glDrawElements(GL_TRIANGLES, mIndexBufferSize, GL_UNSIGNED_INT, mIndices); 
     124   
     125#endif 
     126} 
    98127 
    99128// reimplemented here so that we can snap the error windows 
     
    133162        glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);  
    134163 
    135          
    136         // Render PVS 
    137         ObjectPvsIterator it = pvs.GetIterator(); 
    138164 
    139165        pvsSize = pvs.GetSize(); 
    140166        cout<<pvsSize<<endl; 
    141  
    142         Intersectable::NewMail(); 
    143         mCurrentFrame++; 
    144         while (it.HasMoreEntries())  
    145           { 
    146                 RenderIntersectable(it.Next()); 
    147           } 
    148  
     167         
     168        RenderPvs(pvs); 
     169         
    149170        //glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE); 
    150171        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
     
    212233          glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    213234           
    214           // Render PVS 
    215           Intersectable::NewMail(); 
    216           mCurrentFrame++; 
    217            
    218            
    219           ObjectPvsIterator it = pvs.GetIterator(); 
    220           for (; it.HasMoreEntries(); )  
    221                 { 
    222                   RenderIntersectable(it.Next()); 
    223                 } 
     235          RenderPvs(pvs); 
    224236 
    225237          mUseForcedColors = false; 
     
    464476 
    465477 
    466 void QtGlRendererWidget::_UpdatePvsIndices(KdNode *node, int &indexBufferSize) 
    467 { 
    468         if (node->Mailed()) 
    469                 return; 
    470  
    471         node->Mail(); 
    472  
    473         // if (mObjects.size() * 3 < indexBufferSize) cerr << "problem: " << mObjects.size() * 3 << " < " << indexBufferSize << endl; 
    474         if (!node->IsLeaf())  
    475         { 
    476                 KdInterior *kdInterior = static_cast<KdInterior *>(node); 
    477  
    478                 _UpdatePvsIndices(kdInterior->mBack, indexBufferSize); 
    479                 _UpdatePvsIndices(kdInterior->mFront, indexBufferSize); 
    480         }  
    481         else  
    482         { 
    483                 KdLeaf *leaf = static_cast<KdLeaf *>(node); 
    484  
    485                 leaf->mIndexBufferStart = indexBufferSize; 
    486  
    487                 for (size_t i = 0; i < leaf->mObjects.size(); ++ i) 
    488                 { 
    489                         TriangleIntersectable *obj =  
    490                                 static_cast<TriangleIntersectable *>(leaf->mObjects[i]); 
    491  
    492                         if (obj->mRenderedFrame != mCurrentFrame) 
    493                         { 
    494                                 obj->mRenderedFrame = mCurrentFrame; 
    495  
    496                                 mIndices[indexBufferSize + 0] = (obj->GetId() - 1) * 3 + 0; 
    497                                 mIndices[indexBufferSize + 1] = (obj->GetId() - 1) * 3 + 1; 
    498                                 mIndices[indexBufferSize + 2] = (obj->GetId() - 1) * 3 + 2; 
    499  
    500                                 indexBufferSize += 3; 
    501                         } 
    502                 } 
    503  
    504                 leaf->mIndexBufferSize = indexBufferSize - leaf->mIndexBufferStart; 
    505         } 
    506  
    507         //cout << "id: " << indexBufferSize << endl; 
    508 } 
    509478 
    510479 
Note: See TracChangeset for help on using the changeset viewer.