Open Inventor Reference
SoGLRenderAction Class Reference

Renders a scene graph using OpenGL. More...

#include <Inventor/actions/SoGLRenderAction.h>

Inheritance diagram for SoGLRenderAction:
SoAction SoBoxHighlightRenderAction SoLineHighlightRenderAction

Public Types

enum  TransparencyType {
  SCREEN_DOOR , ADD , DELAYED_ADD , SORTED_OBJECT_ADD ,
  BLEND , DELAYED_BLEND , SORTED_OBJECT_BLEND
}
 Various levels of transparency rendering quality. More...
 
enum  AbortCode { CONTINUE , ABORT , PRUNE , DELAY }
 Possible return codes from a render abort callback. More...
 
typedef AbortCode SoGLRenderAbortCB(void *userData)
 Callback functions for render abort should be of this type.
 
- Public Types inherited from SoAction
enum  AppliedCode { NODE , PATH , PATH_LIST }
 This enum is used to determine what the action is being applied to. More...
 
enum  PathCode { NO_PATH , IN_PATH , BELOW_PATH , OFF_PATH }
 This enum may be used during traversal of nodes to indicate where the node is with respect to the path being traversed. More...
 

Public Member Functions

 SoGLRenderAction (const SbViewportRegion &viewportRegion)
 Constructor.
 
virtual ~SoGLRenderAction ()
 Destructor.
 
void setViewportRegion (const SbViewportRegion &newRegion)
 Changes viewport region to use for rendering.
 
const SbViewportRegiongetViewportRegion () const
 Returns viewport region to use for rendering.
 
void setUpdateArea (const SbVec2f &origin, const SbVec2f &size)
 
void getUpdateArea (SbVec2f &origin, SbVec2f &size) const
 Sets/returns the current update area, which is the rectangular area of the viewport region that will actually be rendered into.
 
void setAbortCallback (SoGLRenderAbortCB *funcArg, void *userData)
 Sets callback to call during rendering to test for an abort condition.
 
void setTransparencyType (TransparencyType type)
 
TransparencyType getTransparencyType () const
 Sets/returns transparency quality level to use when rendering.
 
void setSmoothing (bool smooth)
 
bool isSmoothing () const
 Sets/returns smoothing flag.
 
void setNumPasses (int num)
 
int getNumPasses () const
 Sets/returns number of rendering passes for multipass rendering.
 
void setPassUpdate (bool flag)
 
bool isPassUpdate () const
 Sets/returns a flag indicating whether intermediate results are displayed after each antialiasing pass for progressive improvement (default is FALSE).
 
void setPassCallback (SoGLRenderPassCB *funcArg, void *userData)
 Sets a callback function to invoke between passes when antialiasing.
 
void setCacheContext (uint32_t context)
 
uint32_t getCacheContext () const
 Sets/returns the OpenGL cache context.
 
virtual void invalidateState ()
 Invalidate the state, forcing it to be recreated at the next apply.
 
int getCurPass () const
 Returns current rendering pass number.
 
bool abortNow ()
 Returns TRUE if render action should abort - checks user callback.
 
bool handleTransparency (bool isTransparent=FALSE)
 Returns TRUE if render action handles processing of a transparent object (if it is to be sorted and rendered later).
 
bool isDelaying () const
 Returns TRUE if rendering is being delayed because of transparency sorting or delaying.
 
void addDelayedPath (SoPath *path)
 Adds to the list of paths to render after all other stuff (including delayed/sorted transparent objects) have been rendered.
 
bool isRenderingDelayedPaths () const
 Returns TRUE if currently rendering delayed paths.
 
int getCullTestResults ()
 
void setCullTestResults (int b)
 
bool setAllowDelayedPath (bool flag)
 Sets if delayed paths are allowed while rendering.
 
bool getAllowDelayedPaths ()
 Returns if delayed paths are currently allowed.
 
- Public Member Functions inherited from SoAction
virtual ~SoAction ()
 Destructor.
 
virtual SoType getTypeId () const =0
 Returns the type identifier for a specific instance.
 
bool isOfType (SoType type) const
 Returns TRUE if this instance is of the type specified in type or is derived from that type.
 
virtual void apply (SoNode *node)
 
virtual void apply (SoPath *path)
 
virtual void apply (const SoPathList &pathList, bool obeysRules=FALSE)
 Initiates an action on the graph defined either by a node, path, or list of paths.
 
virtual void invalidateState ()
 Invalidates the current traversal state in the action, forcing it to be recreated when the action is next applied.
 
AppliedCode getWhatAppliedTo () const
 Returns code indicating what action is being applied to.
 
SoNodegetNodeAppliedTo () const
 These returns a pointer to the node, path, or path list the action is being applied to.
 
SoPathgetPathAppliedTo () const
 
const SoPathListgetPathListAppliedTo () const
 A single path list may be split into several, one for each different head node.
 
const SoPathListgetOriginalPathListAppliedTo () const
 
bool isLastPathListAppliedTo () const
 
PathCode getPathCode (int &numIndices, const int *&indices)
 Returns path code based on where current node (the node at the end of the current path) lies with respect to the path(s) the action is being applied to.
 
void traverse (SoNode *node)
 Does traversal of a graph rooted by a node.
 
bool hasTerminated () const
 Returns TRUE if the traversal has reached a termination condition.
 
const SoPathgetCurPath ()
 Returns a pointer to the path accumulated during traversal, i.e., the chain of nodes from the root of the traversed graph to the current node being traversed.
 
SoStategetState () const
 Get the state from the action.
 
PathCode getCurPathCode () const
 These methods maintain the current path accumulated so far during traversal.
 
void pushCurPath (int childIndex)
 
void popCurPath (PathCode prevPathCode)
 
virtual SoNodegetCurPathTail ()
 This is virtual, so that SoCallbackAction can use current node.
 
void usePathCode (int &numIndices, const int *&indices)
 called by inline getPathCode:
 
void pushCurPath ()
 Optimized versions of push/pop when we know path codes won't change:
 
void popPushCurPath (int childIndex)
 
void popCurPath ()
 
const SoLightweightPathgetCurrentLightweightPath () const
 Returns the current "light" path.
 
void setCurrentLightweightPath (const SoLightweightPath &path)
 Sets the current "light" path.
 

Static Public Member Functions

static void initClass ()
 
- Static Public Member Functions inherited from SoAction
static SoType getClassTypeId ()
 Returns the type identifier for this class.
 
static void nullAction (SoAction *, SoNode *)
 Null action method that can be stored in lookup table when desired.
 
static void initClass ()
 
static void initClasses ()
 Initialize ALL Inventor action classes.
 

Protected Member Functions

virtual void beginTraversal (SoNode *node)
 Initiates action on graph.
 
- Protected Member Functions inherited from SoAction
 SoAction ()
 Constructor.
 
virtual const SoEnabledElementsListgetEnabledElements () const
 Returns the list of enabled elements for a given action subclass.
 
virtual void beginTraversal (SoNode *node)
 Begins traversal of an action at the given node.
 
void setTerminated (bool flag)
 Allows subclass instance to indicate that traversal has reached a termination condition.
 
virtual bool shouldCompactPathLists () const
 This method is used when applying an action to an SoPathList.
 

Additional Inherited Members

- Protected Attributes inherited from SoAction
SoStatestate
 Traversal state.
 
SoActionMethodListtraversalMethods
 The list of what to do when.
 
- Static Protected Attributes inherited from SoAction
static SoEnabledElementsListenabledElements
 Holds list of enabled elements for the SoAction class.
 
static SoActionMethodListmethods
 ... and the methods
 

Detailed Description

This class traverses a scene graph and renders it using the OpenGL graphics library. It assumes that a valid window has been created and initialized for proper OpenGL rendering. The SoQtRenderArea class or any of its subclasses may be used to create such a window.

See Also
SoSeparator, SoQtRenderArea

Definition at line 86 of file SoGLRenderAction.h.

Member Typedef Documentation

◆ SoGLRenderAbortCB

typedef AbortCode SoGLRenderAction::SoGLRenderAbortCB(void *userData)

This typedef is defined within the class, since it needs to refer to the AbortCode enumerated type.

Definition at line 114 of file SoGLRenderAction.h.

Member Enumeration Documentation

◆ AbortCode

Enumerator
CONTINUE 

Continue as usual.

ABORT 

Stop traversing the rest of the graph.

PRUNE 

Do not traverse this node or its children.

DELAY 

Delay rendering of this node.

Definition at line 104 of file SoGLRenderAction.h.

◆ TransparencyType

Enumerator
SCREEN_DOOR 

Use GL patterns for screen-door transparency.

ADD 

Use additive GL alpha blending.

DELAYED_ADD 

Use additive blending, do transp objs last.

SORTED_OBJECT_ADD 

Use additive blending, sort objects by bbox.

BLEND 

Use GL alpha blending.

DELAYED_BLEND 

Use GL alpha blending, do transp objs last.

SORTED_OBJECT_BLEND 

Use GL alpha blending, sort objects by bbox.

Definition at line 93 of file SoGLRenderAction.h.

Constructor & Destructor Documentation

◆ SoGLRenderAction()

SoGLRenderAction::SoGLRenderAction ( const SbViewportRegion viewportRegion)

The parameter defines the viewport region into which rendering will take place.

◆ ~SoGLRenderAction()

virtual SoGLRenderAction::~SoGLRenderAction ( )
virtual

Member Function Documentation

◆ abortNow()

bool SoGLRenderAction::abortNow ( )
inline

Definition at line 205 of file SoGLRenderAction.h.

References SoAction::hasTerminated().

◆ addDelayedPath()

void SoGLRenderAction::addDelayedPath ( SoPath path)

(Used for annotation nodes.)

◆ beginTraversal()

virtual void SoGLRenderAction::beginTraversal ( SoNode node)
protectedvirtual

Reimplemented from SoAction.

◆ getAllowDelayedPaths()

bool SoGLRenderAction::getAllowDelayedPaths ( )
inline

Definition at line 242 of file SoGLRenderAction.h.

◆ getCacheContext()

uint32_t SoGLRenderAction::getCacheContext ( ) const

A cache context is just an integer identifying when OpenGL display lists (which are used for render caching) can be shared between render actions.

◆ getCullTestResults()

int SoGLRenderAction::getCullTestResults ( )
inline

Definition at line 234 of file SoGLRenderAction.h.

◆ getCurPass()

int SoGLRenderAction::getCurPass ( ) const
inline

Definition at line 202 of file SoGLRenderAction.h.

◆ getNumPasses()

int SoGLRenderAction::getNumPasses ( ) const
inline

Specifying more than one pass will result in antialiasing of the rendered scene, using OpenGL's accumulation buffer. (Camera nodes typically move their viewpoints a little bit for each pass to achieve the antialiasing.) Each additional pass provides better antialiasing, but requires more rendering time The default is 1 pass.

Definition at line 175 of file SoGLRenderAction.h.

◆ getTransparencyType()

TransparencyType SoGLRenderAction::getTransparencyType ( ) const
inline

The default is SCREEN_DOOR. (Note that SCREEN_DOOR transparency does not work in the case where transparency values are specified for each vertex of a shape. If this is the case, use one of the other transparency types.)

Definition at line 158 of file SoGLRenderAction.h.

◆ getUpdateArea()

void SoGLRenderAction::getUpdateArea ( SbVec2f origin,
SbVec2f size 
) const

This can be used for partial updates in applications that can manage them. The update area is specified in normalized viewport coordinates, where (0,0) is the lower left corner of the viewport and (1,1) is the upper right corner. The area is specified or returned as an origin and a size.

◆ getViewportRegion()

const SbViewportRegion & SoGLRenderAction::getViewportRegion ( ) const
inline

Definition at line 128 of file SoGLRenderAction.h.

◆ handleTransparency()

bool SoGLRenderAction::handleTransparency ( bool  isTransparent = FALSE)

If this returns FALSE, the object should just go ahead and render itself. The optional argument isTransparent ensures that the object being rendered will be taken as transparent, regardless of transparency in the state. If it is false, the state is checked for transparency.

◆ initClass()

static void SoGLRenderAction::initClass ( )
static

◆ invalidateState()

virtual void SoGLRenderAction::invalidateState ( )
virtual

Reimplemented from SoAction.

◆ isDelaying()

bool SoGLRenderAction::isDelaying ( ) const
inline

Definition at line 223 of file SoGLRenderAction.h.

◆ isPassUpdate()

bool SoGLRenderAction::isPassUpdate ( ) const
inline

Definition at line 182 of file SoGLRenderAction.h.

◆ isRenderingDelayedPaths()

bool SoGLRenderAction::isRenderingDelayedPaths ( ) const
inline

Definition at line 231 of file SoGLRenderAction.h.

◆ isSmoothing()

bool SoGLRenderAction::isSmoothing ( ) const
inline

When on, smoothing uses OpenGL's line- and point-smoothing features to provide cheap antialiasing of lines and points. The default is FALSE.

Definition at line 165 of file SoGLRenderAction.h.

◆ setAbortCallback()

void SoGLRenderAction::setAbortCallback ( SoGLRenderAbortCB funcArg,
void *  userData 
)
inline

It will be called for each node that is traversed. This allows applications to terminate rendering prematurely if some condition occurs. The callback function should return one of the AbortCode codes to indicate whether traversal should continue. Use of the various codes in a callback can allow applications to modify Inventor's default order of rendering objects in a scene graph.

Definition at line 148 of file SoGLRenderAction.h.

◆ setAllowDelayedPath()

bool SoGLRenderAction::setAllowDelayedPath ( bool  flag)

Default is true. Returns the previous setting.

◆ setCacheContext()

void SoGLRenderAction::setCacheContext ( uint32_t  context)
See also
getCacheContext

◆ setCullTestResults()

void SoGLRenderAction::setCullTestResults ( int  b)
inline

Definition at line 235 of file SoGLRenderAction.h.

◆ setNumPasses()

void SoGLRenderAction::setNumPasses ( int  num)
inline
See also
getNumPasses

Definition at line 168 of file SoGLRenderAction.h.

◆ setPassCallback()

void SoGLRenderAction::setPassCallback ( SoGLRenderPassCB funcArg,
void *  userData 
)
inline

Passing NULL (which is the default state) will cause a clear of the color and depth buffers to be performed.

Definition at line 187 of file SoGLRenderAction.h.

◆ setPassUpdate()

void SoGLRenderAction::setPassUpdate ( bool  flag)
inline
See also
isPassUpdate

Definition at line 178 of file SoGLRenderAction.h.

◆ setSmoothing()

void SoGLRenderAction::setSmoothing ( bool  smooth)
See also
getSmoothing

◆ setTransparencyType()

void SoGLRenderAction::setTransparencyType ( TransparencyType  type)

◆ setUpdateArea()

void SoGLRenderAction::setUpdateArea ( const SbVec2f origin,
const SbVec2f size 
)
See also
getUpdateArea

◆ setViewportRegion()

void SoGLRenderAction::setViewportRegion ( const SbViewportRegion newRegion)

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