- Timestamp:
- 04/19/05 09:12:55 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingSceneTraverser.cpp
r44 r51 16 16 mQueryMode(MODE_RENDER), mNumSceneNodes(0), mCurrentAlgorithm(RENDER_COHERENT), 17 17 mNumQueries(0), mNumTraversedNodes(0), mNumQueryCulledNodes(0), mNumFrustumCulledNodes(0), 18 mNumRendered Geometry(0), mSceneManager(sm), mRenderSystem(rsys), mSceneRoot(NULL)18 mNumRenderedNodes(0),mNumRenderedGeometry(0), mSceneManager(sm), mRenderSystem(rsys), mSceneRoot(NULL) 19 19 { 20 20 mHalfBoundingBox[0] = mHalfBoundingBox[1] = 0; … … 39 39 mNumFrustumCulledNodes = 0; 40 40 mNumRenderedGeometry = 0; 41 41 mNumRenderedNodes = 0; 42 42 43 mCurrentTestIdx = 0; 43 44 44 45 initDistanceQueue(cam); 45 46 46 //mCurrentAlgorithm = RENDER_CULL_FRUSTUM; 47 //deleteQueries(); 48 //char *msg = "deleting queries\n"; OutputDebugString(msg); 49 //for(unsigned int i=0; i < 1000; i++) 50 //mOcclusionQueries.push_back(mRenderSystem->createHardwareOcclusionQuery()); 51 //mCurrentAlgorithm = RENDER_CULL_FRUSTUM; 52 47 53 switch(mCurrentAlgorithm) 48 54 { … … 54 60 break; 55 61 case RENDER_COHERENT: 56 //renderCoherentWithQueue(cam); 57 renderStopAndWait(cam); 62 renderCoherentWithQueue(cam); 58 63 break; 59 64 default: … … 209 214 // wait if result not available 210 215 query->pullOcclusionQuery(&visiblePixels); 211 216 212 217 // node visible 213 218 if(visiblePixels > mVisibilityThreshold) … … 229 234 // TODO: in rendervisibleobjects, the rendermode is changed by ogre itself => change this!! 230 235 231 //setRenderingMode(MODE_QUERY);232 setRenderingMode(MODE_RENDER);236 setRenderingMode(MODE_QUERY); 237 //setRenderingMode(MODE_RENDER); 233 238 234 239 // get next available test id … … 251 256 //{ 252 257 bool enabled = (mode == MODE_RENDER); 253 258 //if(mode == MODE_QUERY){ 254 259 mRenderSystem->_setColourBufferWriteEnabled(enabled, 255 260 enabled, enabled, enabled); 256 261 mRenderSystem->_setDepthBufferWriteEnabled(enabled); 257 262 mRenderSystem->setLightingEnabled(enabled); 258 263 //} 259 264 mQueryMode = mode; 260 265 //} … … 346 351 void OcclusionCullingSceneTraverser::deleteQueries( void ) 347 352 { 348 for(unsigned int i=0; i < (unsigned int)mOcclusionQueries.size(); i++)353 for(unsigned int i=0; i < (unsigned int)mOcclusionQueries.size(); ++i) 349 354 delete mOcclusionQueries[i]; 350 355 … … 357 362 for(int half = 0; half < 2; half ++) 358 363 { 359 //static Matrix4 xform[256];360 //TODO: this should be full bou dning box364 static Matrix4 xform[256]; 365 //TODO: this should be full bounding box 361 366 SolidHalfBoundingBox *halfbox = getSolidHalfBoundingBox(half); 362 367 halfbox->setupBoundingBox(*box); 363 364 mRenderSystem->_setWorldMatrix(Matrix4::IDENTITY);365 368 369 //mRenderSystem->_setWorldMatrix(Matrix4::IDENTITY); 370 // Set world transformation 371 /*halfbox->getWorldTransforms(xform); 372 373 int numMatrices = halfbox->getNumWorldTransforms(); 374 if (numMatrices > 1) 375 { 376 mRenderSystem->_setWorldMatrices(xform, numMatrices); 377 } 378 else 379 { 380 mRenderSystem->_setWorldMatrix(*xform); 381 } 382 mRenderSystem->setClipPlanes(halfbox->getClipPlanes()); 383 366 384 static RenderOperation ro; 367 385 … … 369 387 halfbox->getRenderOperation(ro); 370 388 ro.srcRenderable = halfbox; 371 mRenderSystem->_render(ro); 372 373 //mSceneManager->renderSingleObject(getSolidHalfBoundingBox(half),374 //getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false);389 mRenderSystem->_render(ro);*/ 390 391 mSceneManager->myrenderSingleObject(getSolidHalfBoundingBox(half), 392 getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false); 375 393 } 376 394 } … … 410 428 { 411 429 mOcclusionQueries.push_back(mRenderSystem->createHardwareOcclusionQuery()); 430 //char *msg = "creating query!!\n"; OutputDebugString(msg); 412 431 } 413 432
Note: See TracChangeset
for help on using the changeset viewer.