H3D API
2.4.1
|
We use the Field's lazy evaluation mechanisms to manage the GL display lists for rendering, giving automatic cache breaking when dependencies are modified. More...
#include <H3D/H3DDisplayListObject.h>
Classes | |
class | IsActive |
The IsActive field is updated each scenegraph loop, since Scene::time is routed to it to see if the callList() function was called during or since the last loop. More... | |
Public Types | |
enum | CacheMode { ON , OFF , OPTIONS } |
The entries in CacheMode enumerator is used for checking if caching should be done or not. More... | |
typedef CacheMode | FrustumCullingMode |
The entries in FrustumCullingMode enumerator is used for checking if view frustum culling should be done. | |
![]() | |
enum | AccessType { INITIALIZE_ONLY , OUTPUT_ONLY , INPUT_ONLY , INPUT_OUTPUT } |
The different access types that a field can have. More... | |
Public Member Functions | |
DisplayList () | |
Constructor. | |
~DisplayList () | |
Destructor. | |
void | setCacheMode (CacheMode m) |
Set the cache mode. | |
CacheMode | getCacheMode () |
Get the cache mode. | |
void | setFrustumCullingMode (FrustumCullingMode m) |
Set the frustum culling mode. | |
FrustumCullingMode | getFrustumCullingMode () |
Get the frustum culling mode. | |
virtual bool | usingCaching () |
Returns true if caching is in use and false otherwise. | |
bool | usingFrustumCulling () |
Returns true if view frustum culling is on. | |
bool | isOutsideViewFrustum () |
Returns true if the bounding box of the owner of this field lies outside the view frustum. More... | |
virtual unsigned int | cachingDelay () |
Returns the number of loops the DisplayList must render without receiving an event before a display is built. | |
void | breakCache () |
If called the display list will be rebuilt on next call to. | |
virtual void | update () |
Calls tryBuildDisplayList(). | |
virtual void | propagateEvent (Event e) |
When the event is propagated the display list is invalidated. | |
virtual void | callList (bool build_list=true) |
Calls the OpenGL call list for if it exists. More... | |
Field * | getEventPointer () |
Gets the pointer to the last field that created an event to this field | |
bool | hasCausedEvent (Field *f) |
Returns true if the Field given has generated an event to this field since the last call to the update() function. | |
template<class FieldType > | |
bool | hasCausedEvent (H3DUniquePtr< FieldType > &f) |
Returns true if the Field given has generated an event to this field since the last call to the update() function. | |
size_t | nrPendingEvents () |
Returns the number of input fields that has generated an event to this field since the last call to the update() function. | |
void | initGraphicOption () |
initialize previous graphic option | |
![]() | |
Field () | |
Constructor. | |
virtual | ~Field () |
Destructor. | |
virtual void | checkFieldType (Field *f, int index) |
Check that a given input field is of the correct type. More... | |
void | setName (string _name) |
Sets local the name of the field. Will be used in error reporting. | |
string | getName () |
Gets the name of the field. | |
string | getFullName () |
Get the full name of the field including the name of the owner node if it exists (ownername.fieldname). More... | |
virtual string | getTypeName () |
Returns a string name for this field type. | |
virtual X3DTypes::X3DType | getX3DType () |
Returns the X3DType of the field. | |
virtual void | route (Field *, int id=0) |
Set up a route from this field to the field given as argument. More... | |
virtual void | routeNoEvent (Field *, int id=0) |
Set up a route from this field to the field given as argument. More... | |
virtual void | unroute (Field *) |
Remove the route from this field to the field given as argument. | |
virtual Field * | replaceRoute (Field *f, unsigned int i, int id=0) |
Replace the i:th route to f with a route from this field. More... | |
virtual Field * | replaceRouteNoEvent (Field *f, unsigned int i, int id=0) |
Replace the i:th route to f with a route from this field. More... | |
template<class F > | |
void | route (H3DUniquePtr< F > &f, int id=0) |
Set up a route from this field to the field residing in the H3DUniquePtr given as argument. More... | |
template<class F > | |
void | routeNoEvent (H3DUniquePtr< F > &f, int id=0) |
Set up a route from this field to the field residing in the H3DUniquePtr given as argument. More... | |
template<class F > | |
void | unroute (H3DUniquePtr< F > &f) |
Remove the route from this field to the field residing in the H3DUniquePtr given as argument. | |
void | unrouteAll () |
Remove all the routes from this field. | |
virtual void | upToDate () |
Check that the field is up-to-date, if not update() is called to make it up-to-date. | |
bool | isUpToDate () |
Returns true if the field is up to date, i.e. More... | |
virtual void | touch () |
Generates an event from this field. | |
Node * | getOwner () |
Get the Node that contains this field. | |
void | setOwner (Node *n) |
Set the Node that contains this field. | |
void | setAccessType (AccessType _access_type) |
Set the access type of the field. | |
AccessType | getAccessType () |
Get the access type of the field. | |
bool | routesTo (Field *f) |
Returns true if this field is routed to the field given as argument. | |
bool | hasRouteFrom (Field *f) |
Returns true if the field given as argument is routed to this field. | |
const FieldVector & | getRoutesIn () |
Get the Fields that are routed to this Field. | |
const FieldSet & | getRoutesOut () |
Get the Fields this Field is routed to. | |
const Event & | getLatestEvent () |
Get the latest event. | |
void | setAccessCheck (bool on) |
Set access type checking on or off. More... | |
bool | isAccessCheckOn () |
Returns true if checking of access types is on. | |
Static Public Member Functions | |
static void | rebuildAllDisplayLists () |
Force a rebuild of all display lists created. | |
![]() | |
static string | classTypeName () |
Returns a string name for this field type. More... | |
Protected Member Functions | |
virtual bool | haveValidDisplayList () |
Returns true if we have a valid display list built that can be called. | |
bool | tryBuildDisplayList (bool cache_broken) |
Try to build a display list. More... | |
![]() | |
virtual void | startEvent () |
Start a new event from this field. More... | |
virtual void | routeFrom (Field *, int id) |
Set up a route to this field from the field given as argument. | |
virtual void | unrouteFrom (Field *) |
Remove the route to this field from the field given as argument. | |
virtual Field * | replaceRouteFrom (Field *f, unsigned int i, int id) |
Replace the i:th route to this field with the field given as argument. | |
void | checkAccessTypeRoute (Field *f, int id) |
Check the access type is correct for performing a route from this field to f. More... | |
void | checkAccessTypeRouteFrom (Field *f, int id) |
Check the access type is correct for performing a route from f to this field. More... | |
void | checkAccessTypeGet (int id) |
Check the access type is valid for getting the value of a field. More... | |
void | checkAccessTypeSet (int id) |
Check the access type is valid for changing the value of a field. More... | |
int | ownerId () |
Gets the id of the owner node, -1 if no owner. | |
bool | isProgramSetting () |
Returns true if this field is part of program settings fields. More... | |
void | markProgramSetting (bool used_as_setting) |
Set it this field is used by program settings fields in scene or not. | |
Protected Attributes | |
set< Field * > | event_fields |
The fields that has generated an event since the last call to update() | |
unsigned int | delay_cache_counter |
Display lists will not be built as long as this counter > 0. | |
GLuint | display_list |
OpenGL display list identifier. | |
CacheMode | cache_mode |
The mode for caching. | |
FrustumCullingMode | frustum_culling_mode |
The mode for view frustum culling. | |
bool | have_valid_display_list |
True if the display list has been built successfully. | |
H3DUniquePtr< IsActive > | isActive |
The isActive field is true if the callList() function has been called in the last scenegraph loop, and false otherwise. | |
GraphicsOptions * | graphic_options_previous |
previous graphic option | |
bool | reset_delay_cache_counter |
flag to require resetting delay_cache_counter | |
![]() | |
string | name |
The name of the field. | |
bool | event_lock |
If true, stops events from being propagated. More... | |
bool | update_lock |
If true, stops the update() function from being called in the upToDate() function. | |
FieldSet | routes_out |
The Fields that this field is routed to. | |
FieldVector | routes_in |
The Field that are routed to this field. | |
Event | event |
The last event that happened. | |
Node * | owner |
The node that contain this field. More... | |
AccessType | access_type |
The type of access to the field. | |
bool | access_check_on |
If true, access type checks will be done when getting/setting values and setting up routes. More... | |
Static Protected Attributes | |
static H3DUniquePtr< Field > | break_list_field |
This field is routed to all instances of DisplayList and can be used to force a rebuild of all display lists. | |
static const int | cache_delay_default = 3 |
default cache delay value | |
We use the Field's lazy evaluation mechanisms to manage the GL display lists for rendering, giving automatic cache breaking when dependencies are modified.
|
virtual |
Calls the OpenGL call list for if it exists.
If it does not exist we try to build it and execute it.
Reimplemented in H3D::X3DShapeNode::DisplayList, H3D::X3DGeometryNode::DisplayList, H3D::X3DComposedGeometryNode::DisplayList, H3D::Polypoint2D::DisplayList, H3D::Polyline2D::DisplayList, H3D::PointSet::DisplayList, H3D::NurbsCurve::DisplayList, H3D::LineSet::DisplayList, H3D::IndexedLineSet::DisplayList, H3D::Circle2D::DisplayList, H3D::Arc2D::DisplayList, and H3D::ElevationGrid::DisplayList.
Referenced by H3D::X3DShapeNode::DisplayList::callList().
bool H3DDisplayListObject::DisplayList::isOutsideViewFrustum | ( | ) |
Returns true if the bounding box of the owner of this field lies outside the view frustum.
References H3D::H3DBoundedObject::bound, H3D::BoxBound::center, H3D::BoxBound::size, and H3D::MatrixTransform::transformedBound.
|
protected |
Try to build a display list.
Requires that the display lists of all H3DDisplayListNode instances that are routed to us are valid in order to build the cache.
cache_broken | true if this call is made when the cache has just been broken, e.g. from the update() function. |
Referenced by update().