SoCullElement - Online Linux Manual PageSection : 3
Updated : Mon Jan 25 2021
Source : Version 3.1.3
Note : Coin

NAMESoCullElement − The SoCullElement class is used internally for render and pick culling​.

SYNOPSIS
#include <Inventor/elements/SoCullElement​.h> Inherits SoElement​.

Public Member Functionsvirtual void init (SoState *state)
virtual void push (SoState *state)
virtual SbBool matches (const SoElement *elt) const
virtual SoElement * copyMatchInfo (void) const

Static Public Member Functionsstatic SoType getClassTypeId (void)
static int getClassStackIndex (void)
static void * createInstance (void)
static void initClass (void)
static void setViewVolume (SoState *state, const SbViewVolume &vv)
static void addPlane (SoState *state, const SbPlane &newplane)
static SbBool cullBox (SoState *state, const SbBox3f &box, const SbBool transform=TRUE)
static SbBool cullTest (SoState *state, const SbBox3f &box, const SbBool transform=TRUE)
static SbBool completelyInside (SoState *state)

Protected Member Functionsvirtual ~SoCullElement ()

Additional Inherited Members

Detailed DescriptionThe SoCullElement class is used internally for render and pick culling​. The element holds all planes the geometry should be inside, and keeps a bitflag to signal which planes need to be tested​. This element is an extension for Coin, and is not available in the original Open Inventor​. The maximum number of planes in this element is 32, which should be more than enough, since the view frustum is represented by 6 planes, and the maximum number of OpenGL clipping planes is typically 6 or 8​. This element is designed for fast culling, and will not do optimal view frustum culling; a box might not be culled even though it is outside the view frustum​. The assumption is that the view frustum is small compared to the world model​. The element simply records all planes to be culled against, and the graph is not culled until it is completely outside one of the planes​. SoCullElement is not active for other actions than SoGLRenderAction​. It's possible to enable it for SoCallbackAction by updating it in a post camera callback though​. Do something like this: static SoCallbackAction::Response camera_cb(void * data, SoCallbackAction * action, const SoNode * node) { SoState * state = action->getState(); SoCullElement::setViewVolume(state, SoViewVolumeElement::get(state)); return SoCallbackAction::CONTINUE; } [...] SoCallbackAction cba(myviewport); cba.addPostCallback(SoCamera::getClassTypeId(), camera_cb, NULL);.fiWhen the view volume is set in SoCullElement in the post camera callback, SoCallbackAction will perform culling on Separators and other nodes in the same way as SoGLRenderAction​.

Constructor & Destructor Documentation

SoCullElement::~SoCullElement () [protected], [virtual]The destructor​.

Member Function Documentation

void * SoCullElement::createInstance (void) [static]This API member is considered internal to the library, as it is not likely to be of interest to the application programmer​.


void SoCullElement::init (SoState * state) [virtual]This function initializes the element type in the given SoState​. It is called for the first element of each enabled element type in SoState objects​. Reimplemented from SoElement​.

void SoCullElement::push (SoState * state) [virtual]This method is called every time a new element is required in one of the stacks​. This happens when a writable element is requested, using SoState::getElement() or indirectly SoElement::getElement(), and the depth of the current element is less than the state depth​. Override this method if your element needs to copy data from the previous top of stack​. The push() method is called on the new element, and the previous element can be found using SoElement::getNextInStack()​. Reimplemented from SoElement​.

void SoCullElement::setViewVolume (SoState * state, const SbViewVolume & vv) [static]Sets the current view volume​. In effect, this adds six planes to the list of culling planes​. If a view volume has already been set, the old view volume planes are overwritten by the new ones​. The view volume must be in the world coordinate systems​.

void SoCullElement::addPlane (SoState * state, const SbPlane & newplane) [static]Add plane geometry must be inside​. The plane must be in the world coordinate system​.

SbBool SoCullElement::cullBox (SoState * state, const SbBox3f & box, const SbBool transform = TRUE) [static]Cull against box​. If transform is TRUE, the box is assumed to be in object space, and will be transformed into world space using the model matrix​. Returns TRUE if box is outside one of the planes, and updates the element to detect when geometry is completely inside all planes​.

SbBool SoCullElement::cullTest (SoState * state, const SbBox3f & box, const SbBool transform = TRUE) [static]Cull against box​. If transform is TRUE, the box is assumed to be in object space, and will be transformed into world space using the model matrix​. Returns TRUE if box is outside one of the planes​. This method will not update the element state, just perform a cull test against active planes​.

SbBool SoCullElement::completelyInside (SoState * state) [static]Returns TRUE if the current geometry is completely inside all planes​. There is no need to do a cull test if this is the case​.

SbBool SoCullElement::matches (const SoElement * element) const [virtual]This function returns TRUE is the element matches another element (of the same class), with respect to cache validity​. If the application programmer's extension element has a matches() function, it should also have a copyMatchInfo() function​. Implements SoElement​.

SoElement * SoCullElement::copyMatchInfo (void) const [virtual]This function creates a copy of the element that contains enough information to enable the matches() function to work​. Used to help with scenegraph traversal caching operations​. Implements SoElement​.

AuthorGenerated automatically by Doxygen for Coin from the source code​.
0
Johanes Gumabo
Data Size   :   26,046 byte
man-SoCullElement.3coin3Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 237,109
Visitor ID   :     :  
Visitor IP   :   3.12.165.68   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.