Panda3D
Classes | Public Types | Public Member Functions | Static Public Member Functions
RenderAttribRegistry Class Reference

This class is used to associate each RenderAttrib with a different slot index at runtime, so we can store a list of RenderAttribs in the RenderState object, and very quickly look them up by type. More...

#include "renderAttribRegistry.h"

List of all members.

Classes

class  RegistryNode
class  SortSlots

Public Types

typedef BitMask32 SlotMask

Public Member Functions

typedef CPT (RenderAttrib) MakeDefaultFunc()
 CPT (RenderAttrib) get_slot_default(int slot) const
DeletedBufferChainget_array_chain () const
 Returns the DeletedBufferChain object that may be used to allocated appropriately-sized arrays of RenderState::Attribute objects.
int get_max_slots () const
 Returns the maximum number that any slot number is allowed to grow.
int get_num_slots () const
 Returns the number of RenderAttrib slots that have been allocated.
int get_num_sorted_slots () const
 Returns the number of entries in the sorted_slots list.
int get_slot (TypeHandle type_handle) const
 Returns the slot number assigned to the indicated TypeHandle, or 0 if no slot number has been assigned.
int get_slot_sort (int slot) const
 Returns the sort number associated with slot n.
TypeHandle get_slot_type (int slot) const
 Returns the TypeHandle associated with slot n.
int get_sorted_slot (int n) const
 Returns the nth slot in sorted order.
int register_slot (TypeHandle type_handle, int sort, MakeDefaultFunc *make_default_func)
 Adds the indicated TypeHandle to the registry, if it is not there already, and returns a unique slot number in the range 0 < slot < get_max_slots().
void set_slot_sort (int slot, int sort)
 Changes the sort number associated with slot n.

Static Public Member Functions

static RenderAttribRegistryget_global_ptr ()
static RenderAttribRegistryquick_get_global_ptr ()
 Returns the global_ptr without first ensuring it has been initialized.

Detailed Description

This class is used to associate each RenderAttrib with a different slot index at runtime, so we can store a list of RenderAttribs in the RenderState object, and very quickly look them up by type.

Definition at line 34 of file renderAttribRegistry.h.


Member Function Documentation

Returns the DeletedBufferChain object that may be used to allocated appropriately-sized arrays of RenderState::Attribute objects.

Definition at line 115 of file renderAttribRegistry.I.

Referenced by RenderState::RenderState(), and RenderState::~RenderState().

int RenderAttribRegistry::get_max_slots ( ) const [inline]

Returns the maximum number that any slot number is allowed to grow.

Actually, this number will be one higher than the highest possible slot number. This puts an upper bound on the number of RenderAttrib slots that may be allocated, and allows other code to define an array of slots.

This number will not change during the lifetime of the application.

Definition at line 45 of file renderAttribRegistry.I.

Referenced by RenderState::RenderState(), and RenderState::~RenderState().

int RenderAttribRegistry::get_num_slots ( ) const [inline]

Returns the number of RenderAttrib slots that have been allocated.

This is one more than the highest slot number in use.

Definition at line 57 of file renderAttribRegistry.I.

Returns the number of entries in the sorted_slots list.

Definition at line 90 of file renderAttribRegistry.I.

Referenced by RenderState::compare_sort().

int RenderAttribRegistry::get_slot ( TypeHandle  type_handle) const [inline]

Returns the slot number assigned to the indicated TypeHandle, or 0 if no slot number has been assigned.

Definition at line 23 of file renderAttribRegistry.I.

References TypeHandle::get_index().

Referenced by PandaNode::clear_attrib(), RenderState::get_attrib(), and RenderState::get_override().

int RenderAttribRegistry::get_slot_sort ( int  slot) const [inline]

Returns the sort number associated with slot n.

Definition at line 78 of file renderAttribRegistry.I.

TypeHandle RenderAttribRegistry::get_slot_type ( int  slot) const [inline]

Returns the TypeHandle associated with slot n.

Definition at line 67 of file renderAttribRegistry.I.

References TypeHandle::none().

int RenderAttribRegistry::get_sorted_slot ( int  n) const [inline]

Returns the nth slot in sorted order.

By traversing this list, you will retrieve all the slot numbers in order according to their registered sort value.

Definition at line 102 of file renderAttribRegistry.I.

Referenced by RenderState::compare_sort().

Returns the global_ptr without first ensuring it has been initialized.

Only safe for code that knows it has already been initialized.

Definition at line 140 of file renderAttribRegistry.I.

Referenced by PandaNode::clear_attrib(), RenderState::compare_sort(), and RenderState::complete_pointers().

int RenderAttribRegistry::register_slot ( TypeHandle  type_handle,
int  sort,
MakeDefaultFunc *  make_default_func 
)

Adds the indicated TypeHandle to the registry, if it is not there already, and returns a unique slot number in the range 0 < slot < get_max_slots().

The sort value is an arbitrary integer. In general, the RenderAttribs will be sorted in order from lowest sort value to highest sort value, when they are traversed via the get_num_sorted_slots() / get_sorted_slot() methods. This will be used to sort render states, so that heavier RenderAttribs are changed less frequently. In general, you should choose sort values such that the heavier RenderAttribs (that is, those which are more expensive to change) have lower sort values.

The make_default_func pointer is a function that may be called to generate a default RenderAttrib to apply in the absence of any other attrib of this type.

register_slot() is intended to be called at application start for each different RenderAttrib type in the system, to assign a different integer slot number to each one.

Definition at line 99 of file renderAttribRegistry.cxx.

References TypeHandle::get_index().

Referenced by RenderAttrib::register_slot().

void RenderAttribRegistry::set_slot_sort ( int  slot,
int  sort 
)

Changes the sort number associated with slot n.

Definition at line 140 of file renderAttribRegistry.cxx.


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations