OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
osgUtil::IncrementalCompileOperation Class Reference

#include <IncrementalCompileOperation.h>

Inheritance diagram for osgUtil::IncrementalCompileOperation:
Inheritance graph
[legend]
Collaboration diagram for osgUtil::IncrementalCompileOperation:
Collaboration graph
[legend]

Classes

struct  CompileCompletedCallback
 
struct  CompileDrawableOp
 
struct  CompileInfo
 
class  CompileList
 
struct  CompileOp
 
struct  CompileProgramOp
 
class  CompileSet
 
struct  CompileTextureOp
 

Public Types

typedef std::vector
< osg::GraphicsContext * > 
Contexts
 
typedef std::set
< osg::GraphicsContext * > 
ContextSet
 
typedef std::list
< osg::ref_ptr< CompileSet > > 
CompileSets
 

Public Member Functions

 IncrementalCompileOperation ()
 
bool isActive () const
 
bool requiresCompile (StateToCompile &stateToCompile)
 
void setTargetFrameRate (double tfr)
 
double getTargetFrameRate () const
 
void setMinimumTimeAvailableForGLCompileAndDeletePerFrame (double ta)
 
double getMinimumTimeAvailableForGLCompileAndDeletePerFrame () const
 
void setMaximumNumOfObjectsToCompilePerFrame (unsigned int num)
 
unsigned int getMaximumNumOfObjectsToCompilePerFrame () const
 
void setFlushTimeRatio (double ratio)
 
double getFlushTimeRatio () const
 
void setConservativeTimeRatio (double ratio)
 
double getConservativeTimeRatio () const
 
void assignForceTextureDownloadGeometry ()
 
void setForceTextureDownloadGeometry (osg::Geometry *geom)
 
osg::GeometrygetForceTextureDownloadGeometry ()
 
const osg::GeometrygetForceTextureDownloadGeometry () const
 
void assignContexts (Contexts &contexts)
 
void removeContexts (Contexts &contexts)
 
void addGraphicsContext (osg::GraphicsContext *gc)
 
void removeGraphicsContext (osg::GraphicsContext *gc)
 
ContextSetgetContextSet ()
 
const ContextSetgetContextSet () const
 
void mergeCompiledSubgraphs (const osg::FrameStamp *frameStamp)
 
void setCurrentFrameNumber (unsigned int fn)
 
unsigned int getCurrentFrameNumber () const
 
void compileAllForNextFrame (unsigned int numFramesToDoCompileAll=1)
 
void setCompileAllTillFrameNumber (unsigned int fn)
 
unsigned int getCompileAllTillFrameNumber () const
 
virtual void operator() (osg::GraphicsContext *context)
 
void add (osg::Node *subgraphToCompile)
 
void add (osg::Group *attachmentPoint, osg::Node *subgraphToCompile)
 
void add (CompileSet *compileSet, bool callBuildCompileMap=true)
 
void remove (CompileSet *compileSet)
 
OpenThreads::MutexgetToCompiledMutex ()
 
CompileSetsgetToCompile ()
 
OpenThreads::MutexgetCompiledMutex ()
 
CompileSetsgetCompiled ()
 
void setMarkerObject (osg::Object *mo)
 
osg::ObjectgetMarkerObject ()
 
const osg::ObjectgetMarkerObject () const
 
- Public Member Functions inherited from osg::GraphicsOperation
 GraphicsOperation (const std::string &name, bool keep)
 
virtual void operator() (Object *object)
 
- Public Member Functions inherited from osg::Operation
 Operation (const std::string &name, bool keep)
 
void setName (const std::string &name)
 
const std::string & getName () const
 
void setKeep (bool keep)
 
bool getKeep () const
 
virtual void release ()
 
- Public Member Functions inherited from osg::Referenced
 Referenced ()
 
 Referenced (bool threadSafeRefUnref)
 
 Referenced (const Referenced &)
 
Referencedoperator= (const Referenced &)
 
virtual void setThreadSafeRefUnref (bool threadSafe)
 
bool getThreadSafeRefUnref () const
 
OpenThreads::MutexgetRefMutex () const
 
int ref () const
 
int unref () const
 
int unref_nodelete () const
 
int referenceCount () const
 
ObserverSetgetObserverSet () const
 
ObserverSetgetOrCreateObserverSet () const
 
void addObserver (Observer *observer) const
 
void removeObserver (Observer *observer) const
 

Protected Member Functions

virtual ~IncrementalCompileOperation ()
 
void compileSets (CompileSets &toCompile, CompileInfo &compileInfo)
 
- Protected Member Functions inherited from osg::Operation
 Operation ()
 
 Operation (const Operation &op)
 
virtual ~Operation ()
 
- Protected Member Functions inherited from osg::Referenced
virtual ~Referenced ()
 
void signalObserversAndDelete (bool signalDelete, bool doDelete) const
 
void deleteUsingDeleteHandler () const
 

Protected Attributes

double _targetFrameRate
 
double _minimumTimeAvailableForGLCompileAndDeletePerFrame
 
unsigned int _maximumNumOfObjectsToCompilePerFrame
 
double _flushTimeRatio
 
double _conservativeTimeRatio
 
unsigned int _currentFrameNumber
 
unsigned int _compileAllTillFrameNumber
 
osg::ref_ptr< osg::Geometry_forceTextureDownloadGeometry
 
OpenThreads::Mutex _toCompileMutex
 
CompileSets _toCompile
 
OpenThreads::Mutex _compiledMutex
 
CompileSets _compiled
 
ContextSet _contexts
 
osg::ref_ptr< osg::Object_markerObject
 
- Protected Attributes inherited from osg::Operation
std::string _name
 
bool _keep
 
- Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr _observerSet
 
OpenThreads::Atomic _refCount
 

Additional Inherited Members

- Static Public Member Functions inherited from osg::Referenced
static OpenThreads::MutexgetGlobalReferencedMutex ()
 
static void setThreadSafeReferenceCounting (bool enableThreadSafeReferenceCounting)
 
static bool getThreadSafeReferenceCounting ()
 
static void setDeleteHandler (DeleteHandler *handler)
 
static DeleteHandlergetDeleteHandler ()
 

Detailed Description

Definition at line 55 of file IncrementalCompileOperation.h.

Member Typedef Documentation

Definition at line 274 of file IncrementalCompileOperation.h.

Definition at line 124 of file IncrementalCompileOperation.h.

Definition at line 131 of file IncrementalCompileOperation.h.

Constructor & Destructor Documentation

osgUtil::IncrementalCompileOperation::IncrementalCompileOperation ( )
virtual osgUtil::IncrementalCompileOperation::~IncrementalCompileOperation ( )
protectedvirtual

Member Function Documentation

void osgUtil::IncrementalCompileOperation::add ( osg::Node subgraphToCompile)

Add a subgraph to be compiled.

void osgUtil::IncrementalCompileOperation::add ( osg::Group attachmentPoint,
osg::Node subgraphToCompile 
)

Add a subgraph to be compiled and add automatically to attachPoint on call to mergeCompiledSubgraphs.

void osgUtil::IncrementalCompileOperation::add ( CompileSet compileSet,
bool  callBuildCompileMap = true 
)

Add a CompileSet to be compiled.

void osgUtil::IncrementalCompileOperation::addGraphicsContext ( osg::GraphicsContext gc)
void osgUtil::IncrementalCompileOperation::assignContexts ( Contexts contexts)
void osgUtil::IncrementalCompileOperation::assignForceTextureDownloadGeometry ( )

Assign a geometry and associated StateSet than is applied after each texture compile to atttempt to force the OpenGL drive to download the texture object to OpenGL graphics card.

void osgUtil::IncrementalCompileOperation::compileAllForNextFrame ( unsigned int  numFramesToDoCompileAll = 1)

tell the IncrementalCompileOperation to compile all pending objects during next draw traversal, for specified number of frames.

void osgUtil::IncrementalCompileOperation::compileSets ( CompileSets toCompile,
CompileInfo compileInfo 
)
protected
unsigned int osgUtil::IncrementalCompileOperation::getCompileAllTillFrameNumber ( ) const
inline

Definition at line 153 of file IncrementalCompileOperation.h.

CompileSets& osgUtil::IncrementalCompileOperation::getCompiled ( )
inline

Definition at line 292 of file IncrementalCompileOperation.h.

OpenThreads::Mutex* osgUtil::IncrementalCompileOperation::getCompiledMutex ( )
inline

Definition at line 291 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::getConservativeTimeRatio ( ) const
inline

Definition at line 112 of file IncrementalCompileOperation.h.

ContextSet& osgUtil::IncrementalCompileOperation::getContextSet ( )
inline

Definition at line 132 of file IncrementalCompileOperation.h.

const ContextSet& osgUtil::IncrementalCompileOperation::getContextSet ( ) const
inline

Definition at line 133 of file IncrementalCompileOperation.h.

unsigned int osgUtil::IncrementalCompileOperation::getCurrentFrameNumber ( ) const
inline

Definition at line 144 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::getFlushTimeRatio ( ) const
inline

Definition at line 105 of file IncrementalCompileOperation.h.

osg::Geometry* osgUtil::IncrementalCompileOperation::getForceTextureDownloadGeometry ( )
inline

Definition at line 121 of file IncrementalCompileOperation.h.

const osg::Geometry* osgUtil::IncrementalCompileOperation::getForceTextureDownloadGeometry ( ) const
inline

Definition at line 122 of file IncrementalCompileOperation.h.

osg::Object* osgUtil::IncrementalCompileOperation::getMarkerObject ( )
inline

Definition at line 295 of file IncrementalCompileOperation.h.

const osg::Object* osgUtil::IncrementalCompileOperation::getMarkerObject ( ) const
inline

Definition at line 296 of file IncrementalCompileOperation.h.

unsigned int osgUtil::IncrementalCompileOperation::getMaximumNumOfObjectsToCompilePerFrame ( ) const
inline

Get the maximum number of OpenGL objects that the page should attempt to compile per frame.

Definition at line 99 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::getMinimumTimeAvailableForGLCompileAndDeletePerFrame ( ) const
inline

Get the minimum amount of time that should be made available for compiling and delete OpenGL objects per frame. For usage see notes in setTargetFrameRate.

Definition at line 91 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::getTargetFrameRate ( ) const
inline

Get the target frame rate that the IncrementalCompileOperation should assume.

Definition at line 82 of file IncrementalCompileOperation.h.

CompileSets& osgUtil::IncrementalCompileOperation::getToCompile ( )
inline

Definition at line 289 of file IncrementalCompileOperation.h.

OpenThreads::Mutex* osgUtil::IncrementalCompileOperation::getToCompiledMutex ( )
inline

Definition at line 288 of file IncrementalCompileOperation.h.

bool osgUtil::IncrementalCompileOperation::isActive ( ) const
inline

Return true if the IncrementCompileOperation is active.

Definition at line 62 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::mergeCompiledSubgraphs ( const osg::FrameStamp frameStamp)

Merge subgraphs that have been compiled.

virtual void osgUtil::IncrementalCompileOperation::operator() ( osg::GraphicsContext context)
virtual
void osgUtil::IncrementalCompileOperation::remove ( CompileSet compileSet)

Remove CompileSet from list.

void osgUtil::IncrementalCompileOperation::removeContexts ( Contexts contexts)
void osgUtil::IncrementalCompileOperation::removeGraphicsContext ( osg::GraphicsContext gc)
bool osgUtil::IncrementalCompileOperation::requiresCompile ( StateToCompile stateToCompile)
void osgUtil::IncrementalCompileOperation::setCompileAllTillFrameNumber ( unsigned int  fn)
inline

tell the IncrementalCompileOperation to compile all pending objects during next draw traversal, till specified frame number.

Definition at line 152 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setConservativeTimeRatio ( double  ratio)
inline

ConservativeTimeRatio governs how much of the measured spare time in each frame is used for flushing deleted and compile new OpenGL objects. Default value is 0.5, valid range is 0.1 to 1.0. A ratio near 1.0 will lead to paged databases being compiled and merged quicker but increase the chances of frame drop. A ratio near 0.1 will lead to paged databases being compiled and merged closer but reduse the chances of frame drop.

Definition at line 111 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setCurrentFrameNumber ( unsigned int  fn)
inline

Set the current frame number that the IncrementalCompileOperation should use as a reference value for calculations based on current frame number. Note, this value is set by the mergeCompiledSubgraphs(..) method so one won't normally need to call set the CurrentFrameNumber manually.

Definition at line 143 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setFlushTimeRatio ( double  ratio)
inline

FlushTimeRatio governs how much of the spare time in each frame is used for flushing deleted OpenGL objects. Default value is 0.5, valid range is 0.1 to 0.9.

Definition at line 104 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setForceTextureDownloadGeometry ( osg::Geometry geom)
inline

Set the osg::Geometry to apply after each texture compile to atttempt to force the OpenGL drive to download the texture object to OpenGL graphics card.

Definition at line 120 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setMarkerObject ( osg::Object mo)
inline

Definition at line 294 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setMaximumNumOfObjectsToCompilePerFrame ( unsigned int  num)
inline

Set the maximum number of OpenGL objects that the page should attempt to compile per frame. Note, Lower values reduces chances of a frame drop but lower the rate that database will be paged in at. Default value is 8.

Definition at line 96 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setMinimumTimeAvailableForGLCompileAndDeletePerFrame ( double  ta)
inline

Set the minimum amount of time (in seconds) that should be made available for compiling and delete OpenGL objects per frame. Default value is 0.001 (1 millisecond). For usage see notes in setTargetFrameRate.

Definition at line 87 of file IncrementalCompileOperation.h.

void osgUtil::IncrementalCompileOperation::setTargetFrameRate ( double  tfr)
inline

Set the target frame rate that the IncrementalCompileOperation should assume. Typically one would set this to the value refresh rate of your display system i.e. 60Hz. Default value is 100. Usage notes. The TargetFrameRate and the MinimumTimeAvailableForGLCompileAndDeletePerFrame parameters are not directly used by IncrementalCompileOperation, but are should be used as a guide for how long to set aside per frame for compiling and deleting OpenGL objects. The longer amount of time to set aside the faster databases will be paged in but with increased chance of frame drops, the lower the amount of time the set aside the slower databases will paged it but with better chance of avoid any frame drops. The default values are chosen to achieve the later when running on a modern mid to high end PC. The way to compute the amount of available time use a scheme such as : availableTime = maximum(1.0/targetFrameRate - timeTakenDuringUpdateCullAndDraw, minimumTimeAvailableForGLCompileAndDeletePerFrame).

Definition at line 79 of file IncrementalCompileOperation.h.

Member Data Documentation

unsigned int osgUtil::IncrementalCompileOperation::_compileAllTillFrameNumber
protected

Definition at line 311 of file IncrementalCompileOperation.h.

CompileSets osgUtil::IncrementalCompileOperation::_compiled
protected

Definition at line 319 of file IncrementalCompileOperation.h.

OpenThreads::Mutex osgUtil::IncrementalCompileOperation::_compiledMutex
protected

Definition at line 318 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::_conservativeTimeRatio
protected

Definition at line 308 of file IncrementalCompileOperation.h.

ContextSet osgUtil::IncrementalCompileOperation::_contexts
protected

Definition at line 321 of file IncrementalCompileOperation.h.

unsigned int osgUtil::IncrementalCompileOperation::_currentFrameNumber
protected

Definition at line 310 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::_flushTimeRatio
protected

Definition at line 307 of file IncrementalCompileOperation.h.

osg::ref_ptr<osg::Geometry> osgUtil::IncrementalCompileOperation::_forceTextureDownloadGeometry
protected

Definition at line 313 of file IncrementalCompileOperation.h.

osg::ref_ptr<osg::Object> osgUtil::IncrementalCompileOperation::_markerObject
protected

Definition at line 323 of file IncrementalCompileOperation.h.

unsigned int osgUtil::IncrementalCompileOperation::_maximumNumOfObjectsToCompilePerFrame
protected

Definition at line 306 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::_minimumTimeAvailableForGLCompileAndDeletePerFrame
protected

Definition at line 305 of file IncrementalCompileOperation.h.

double osgUtil::IncrementalCompileOperation::_targetFrameRate
protected

Definition at line 304 of file IncrementalCompileOperation.h.

CompileSets osgUtil::IncrementalCompileOperation::_toCompile
protected

Definition at line 316 of file IncrementalCompileOperation.h.

OpenThreads::Mutex osgUtil::IncrementalCompileOperation::_toCompileMutex
protected

Definition at line 315 of file IncrementalCompileOperation.h.


The documentation for this class was generated from the following file: