Began work on providing support for threading camera cull traversals in parallel with

the previous frames draw traversal.  Changes range from osg::State, through osgUtil::RenderBin, through to osgViewer
This commit is contained in:
Robert Osfield
2007-01-29 22:44:29 +00:00
parent 6835996c21
commit fd0ea388c2
18 changed files with 387 additions and 26 deletions

View File

@@ -63,6 +63,13 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View
/** Get the threading model the rendering traversals will use.*/
ThreadingModel getThreadingModel() const { return _threadingModel; }
/** Set whether the main thread, calling frame(), should be used for the rendering traversals.*/
void setUseMainThreadForRenderingTraversals(bool flag);
/** Get whether the main thread, calling frame(), should be used for the rendering traversals.*/
bool getUseMainThreadForRenderingTraversals() const { return _useMainThreadForRenderingTraversal; }
enum BarrierPosition
{
BeforeSwapBuffers,
@@ -148,11 +155,13 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View
int _keyEventSetsDone;
bool _quitEventSetsDone;
ThreadingModel _threadingModel;
ThreadingModel _threadingModel;
bool _useMainThreadForRenderingTraversal;
BarrierPosition _endBarrierPosition;
osg::ref_ptr<osg::BarrierOperation> _startRenderingBarrier;
osg::ref_ptr<osg::BarrierOperation> _endRenderingDispatchBarrier;
osg::ref_ptr<EndOfDynamicDrawBlock> _endDynamicDrawBlock;
unsigned int computeNumberOfThreadsIncludingMainRequired();