Changeset 8299
- Timestamp:
- 05/10/08 19:04:02
- Files:
-
- OpenSceneGraph/trunk/include/osgViewer/Renderer (modified) (2 diffs)
- OpenSceneGraph/trunk/src/osgViewer/Renderer.cpp (modified) (4 diffs)
- OpenSceneGraph/trunk/src/osgViewer/View.cpp (modified) (2 diffs)
- OpenSceneGraph/trunk/src/osgViewer/ViewerBase.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
OpenSceneGraph/trunk/include/osgViewer/Renderer
r8121 r8299 67 67 bool getGraphicsThreadDoesCull() const { return _graphicsThreadDoesCull; } 68 68 69 69 70 virtual void cull(); 70 71 virtual void draw(); 71 72 virtual void cull_draw(); 73 74 virtual void compile(); 75 76 void setCompileOnNextDraw(bool flag) { _compileOnNextDraw = flag; } 77 bool getCompileOnNextDraw() const { return _compileOnNextDraw; } 72 78 73 79 virtual void operator () (osg::Object* object); … … 137 143 bool _done; 138 144 bool _graphicsThreadDoesCull; 145 bool _compileOnNextDraw; 139 146 140 147 osg::ref_ptr<osgUtil::SceneView> _sceneView[2]; OpenSceneGraph/trunk/src/osgViewer/Renderer.cpp
r8121 r8299 168 168 _camera(camera), 169 169 _done(false), 170 _graphicsThreadDoesCull(true) 170 _graphicsThreadDoesCull(true), 171 _compileOnNextDraw(true) 171 172 { 172 173 … … 252 253 } 253 254 255 void Renderer::compile() 256 { 257 DEBUG_MESSAGE<<"Renderer::compile()"<<std::endl; 258 259 _compileOnNextDraw = false; 260 261 osgUtil::SceneView* sceneView = _sceneView[0].get(); 262 if (!sceneView || _done) return; 263 264 if (sceneView->getSceneData()) 265 { 266 osgUtil::GLObjectsVisitor glov; 267 glov.setState(sceneView->getState()); 268 sceneView->getSceneData()->accept(glov); 269 } 270 } 254 271 255 272 void Renderer::cull() … … 323 340 osg::GraphicsThread* compileThread = compileContext ? compileContext->getGraphicsThread() : 0; 324 341 325 if (sceneView || _done) 326 { 342 if (sceneView && !_done) 343 { 344 if (_compileOnNextDraw) 345 { 346 compile(); 347 } 348 327 349 osgViewer::View* view = dynamic_cast<osgViewer::View*>(_camera->getView()); 328 350 osgDB::DatabasePager* databasePager = view ? view->getDatabasePager() : 0; … … 431 453 osgUtil::SceneView* sceneView = _sceneView[0].get(); 432 454 if (!sceneView || _done) return; 455 456 if (_compileOnNextDraw) 457 { 458 compile(); 459 } 433 460 434 461 updateSceneView(sceneView); OpenSceneGraph/trunk/src/osgViewer/View.cpp
r8276 r8299 1635 1635 _camera->removeChildren(0,_camera->getNumChildren()); 1636 1636 if (sceneData) _camera->addChild(sceneData); 1637 1638 Renderer* renderer = dynamic_cast<Renderer*>(_camera->getRenderer()); 1639 if (renderer) renderer->setCompileOnNextDraw(true); 1640 1637 1641 } 1638 1642 … … 1644 1648 slave._camera->removeChildren(0,slave._camera->getNumChildren()); 1645 1649 if (sceneData) slave._camera->addChild(sceneData); 1650 1651 Renderer* renderer = dynamic_cast<Renderer*>(slave._camera->getRenderer()); 1652 if (renderer) renderer->setCompileOnNextDraw(true); 1646 1653 } 1647 1654 } OpenSceneGraph/trunk/src/osgViewer/ViewerBase.cpp
r7837 r8299 27 27 #include <osgUtil/Optimizer> 28 28 #include <osgUtil/IntersectionVisitor> 29 #include <osgUtil/GLObjectsVisitor>30 #include <osgUtil/RenderLeaf>31 29 32 30 static osg::ApplicationUsageProxy ViewerBase_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_CONFIG_FILE <filename>","Specify a viewer configuration file to load by default."); … … 282 280 osg::Referenced::setThreadSafeReferenceCounting(true); 283 281 284 285 282 Scenes scenes; 286 283 getScenes(scenes); … … 375 372 if (affinity) gc->getGraphicsThread()->setProcessorAffinity(processNum % numProcessors); 376 373 threadAffinityMap[gc->getGraphicsThread()] = processNum % numProcessors; 377 378 gc->getGraphicsThread()->add(new osgUtil::GLObjectsOperation());379 374 380 375 // add the startRenderingBarrier
