|
Public Types |
typedef OpenThreads::Thread::ThreadPriority | ThreadPriority |
typedef std::list< osg::ref_ptr<
osg::PagedLOD > > | PagedLODList |
typedef std::set< osg::ref_ptr<
osg::StateSet > > | StateSetList |
typedef std::vector< osg::ref_ptr<
osg::Drawable > > | DrawableList |
typedef std::pair< StateSetList,
DrawableList > | DataToCompile |
typedef std::map< unsigned
int, DataToCompile > | DataToCompileMap |
typedef std::set< unsigned
int > | ActiveGraphicsContexts |
enum | DrawablePolicy { DO_NOT_MODIFY_DRAWABLE_SETTINGS,
USE_DISPLAY_LISTS,
USE_VERTEX_BUFFER_OBJECTS,
USE_VERTEX_ARRAYS
} |
Public Member Functions |
| DatabasePager () |
virtual void | requestNodeFile (const std::string &fileName, osg::Group *group, float priority, const osg::FrameStamp *framestamp) |
| Add a request to load a node file to end the the database request list.
|
virtual void | run () |
| Run does the database paging.
|
virtual int | cancel () |
| Cancel the database pager thread.
|
virtual void | clear () |
| Clear all internally cached structures.
|
void | setDatabasePagerThreadPause (bool pause) |
| Set whether the database pager thread should be paused or not.
|
bool | getDatabasePagerThreadPause () const |
| Get whether the database pager thread should is paused or not.
|
void | setAcceptNewDatabaseRequests (bool acceptNewRequests) |
| Set whether new database request calls are accepted or ignored.
|
bool | getAcceptNewDatabaseRequests () const |
| Get whether new database request calls are accepted or ignored.
|
void | setUseFrameBlock (bool useFrameBlock) |
| Set the use of the frame block which, if enabled, blocks the DatabasePager from executing which the current frame is being drawn.
|
bool | getUseFrameBlock () const |
| Get the whether UseFrameBlock is on or off.
|
osg::Block * | getFrameBlock () |
void | setThreadPriorityDuringFrame (ThreadPriority duringFrame) |
| Set the priority of the database pager thread during the frame (i.e.
|
ThreadPriority | getThreadPriorityDuringFrame () const |
| Get the priority of the database pager thread during the frame.
|
void | setThreadPriorityOutwithFrame (ThreadPriority outwithFrame) |
| Set the priority of the database pager thread when the frame is not being exectuted (i.e.
|
ThreadPriority | getThreadPriorityOutwithFrame () const |
| Get the priority of the database pager thread when the frame is not being exectuted.
|
int | getNumFramesActive () const |
| Get the number of frames that are currently active.
|
virtual void | signalBeginFrame (const osg::FrameStamp *framestamp) |
| Signal the database thread that the update, cull and draw has begun for a new frame.
|
virtual void | signalEndFrame () |
| Signal the database thread that the update, cull and draw dispatch has completed.
|
virtual void | registerPagedLODs (osg::Node *subgraph) |
| Find all PagedLOD nodes in a subgraph and register them with the DatabasePager so it can keep track of expired nodes.
|
void | setDoPreCompile (bool flag) |
| Set whether the database pager should pre compile OpenGL objects before allowing them to be merged into the scene graph.
|
bool | getDoPreCompile () const |
| Get whether the database pager should pre compile OpenGL objects before allowing them to be merged into the scene graph.
|
void | setTargetFrameRate (double tfr) |
| Set the target frame rate that the DatabasePager should assume.
|
double | getTargetFrameRate () const |
| Get the target frame rate that the DatabasePager should assume.
|
void | setMinimumTimeAvailableForGLCompileAndDeletePerFrame (double ta) |
| Set the minimum amount of time (in seconds) that should be made available for compiling and delete OpenGL objects per frame.
|
double | getMinimumTimeAvailableForGLCompileAndDeletePerFrame () const |
| Get the minimum amount of time that should be made available for compiling and delete OpenGL objects per frame.
|
void | setMaximumNumOfObjectsToCompilePerFrame (unsigned int num) |
| Set the maximum number of OpenGL objects that the page should attempt to compile per frame.
|
unsigned int | getMaximumNumOfObjectsToCompilePerFrame () const |
| Get the maximum number of OpenGL objects that the page should attempt to compile per frame.
|
void | setExpiryDelay (double expiryDelay) |
| Set the amount of time that a subgraph will be kept without being visited in the cull traversal before being removed.
|
double | getExpiryDelay () const |
| Get the amount of time that a subgraph will be kept without being visited in the cull traversal before being removed.
|
void | setDeleteRemovedSubgraphsInDatabaseThread (bool flag) |
| Set whether the removed subgraphs should be deleted in the database thread or not.
|
bool | getDeleteRemovedSubgraphsInDatabaseThread () const |
| Get whether the removed subgraphs should be deleted in the database thread or not.
|
void | setDrawablePolicy (DrawablePolicy policy) |
| Set how loaded drawables should be handled w.r.t their display list/vertex buffer object/vertex array settings.
|
DrawablePolicy | getDrawablePolicy () const |
| Get how loaded drawables should be handled w.r.t their display list/vertex buffer object/vertex array settings.
|
void | setUnrefImageDataAfterApplyPolicy (bool changeAutoUnRef, bool valueAutoUnRef) |
| Set whether newly loaded textures should have their UnrefImageDataAfterApply set to a specified value.
|
void | getUnrefImageDataAfterApplyPolicy (bool &changeAutoUnRef, bool &valueAutoUnRef) const |
| Get whether newly loaded textures should have their UnrefImageDataAfterApply set to a specified value.
|
void | setMaxAnisotropyPolicy (bool changeAnisotropy, float valueAnisotropy) |
| Set whether newly loaded textures should have their MaxAnisotopy set to a specified value.
|
void | getMaxAnisotropyPolicy (bool &changeAnisotropy, float &valueAnisotropy) const |
| Set whether newly loaded textures should have their MaxAnisotopy set to a specified value.
|
bool | requiresUpdateSceneGraph () const |
| Return true if there are pending updates to the scene graph that require a call to updateSceneGraph(double).
|
virtual void | updateSceneGraph (double currentFrameTime) |
| Merge the changes to the scene graph by calling calling removeExpiredSubgraphs then addLoadedDataToSceneGraph.
|
void | setCompileGLObjectsForContextID (unsigned int contextID, bool on) |
| Turn the compilation of rendering objects for specfied graphics context on (true) or off(false).
|
bool | getCompileGLObjectsForContextID (unsigned int contextID) |
| Get whether the compilation of rendering objects for specfied graphics context on (true) or off(false).
|
bool | requiresCompileGLObjects () const |
| Return true if there are pending compile operations that are required.
|
virtual void | compileGLObjects (osg::State &state, double &availableTime) |
| Compile the rendering objects (display lists,texture objects, VBO's) on loaded subgraph.
|
Protected Types |
typedef std::vector< osg::ref_ptr<
DatabaseRequest > > | DatabaseRequestList |
typedef std::vector< osg::ref_ptr<
osg::Object > > | ObjectList |
Protected Member Functions |
virtual | ~DatabasePager () |
void | updateDatabasePagerThreadBlock () |
void | updateFrameBlock (int delta) |
virtual void | removeExpiredSubgraphs (double currentFrameTime) |
| Iterate through the active PagedLOD nodes children removing children which havn't been visited since specified expiryTime.
|
void | addLoadedDataToSceneGraph (double currentFrameTime) |
| Add the loaded data to the scene graph.
|
Protected Attributes |
OpenThreads::Mutex | _run_mutex |
bool | _startThreadCalled |
osg::ref_ptr< osg::Block > | _databasePagerThreadBlock |
bool | _done |
bool | _acceptNewRequests |
bool | _databasePagerThreadPaused |
bool | _useFrameBlock |
int | _numFramesActive |
OpenThreads::Mutex | _numFramesActiveMutex |
osg::ref_ptr< osg::Block > | _frameBlock |
int | _frameNumber |
ThreadPriority | _threadPriorityDuringFrame |
ThreadPriority | _threadPriorityOutwithFrame |
DatabaseRequestList | _fileRequestList |
OpenThreads::Mutex | _fileRequestListMutex |
DatabaseRequestList | _dataToCompileList |
OpenThreads::Mutex | _dataToCompileListMutex |
DrawablePolicy | _drawablePolicy |
bool | _changeAutoUnRef |
bool | _valueAutoUnRef |
bool | _changeAnisotropy |
float | _valueAnisotropy |
bool | _deleteRemovedSubgraphsInDatabaseThread |
ObjectList | _childrenToDeleteList |
OpenThreads::Mutex | _childrenToDeleteListMutex |
DatabaseRequestList | _dataToMergeList |
OpenThreads::Mutex | _dataToMergeListMutex |
PagedLODList | _activePagedLODList |
PagedLODList | _inactivePagedLODList |
double | _expiryDelay |
ActiveGraphicsContexts | _activeGraphicsContexts |
bool | _doPreCompile |
double | _targetFrameRate |
double | _minimumTimeAvailableForGLCompileAndDeletePerFrame |
unsigned int | _maximumNumOfObjectsToCompilePerFrame |