Panda3D
Static Public Member Functions | List of all members
MaterialPool Class Reference

The MaterialPool (there is only one in the universe) serves to unify different pointers to the same Material, so we do not (a) waste memory with many different Material objects that are all equivalent, and (b) waste time switching the graphics engine between different Material states that are really the same thing. More...

#include "materialPool.h"

Static Public Member Functions

static int garbage_collect ()
 Releases only those materials in the pool that have a reference count of exactly 1; i.e. More...
 
static Materialget_material (Material *temp)
 Returns a Material pointer that represents the same material described by temp, except that it is a shared pointer. More...
 
static void list_contents (std::ostream &out)
 Lists the contents of the material pool to the indicated output stream. More...
 
static void release_all_materials ()
 Releases all materials in the pool and restores the pool to the empty state. More...
 
static void release_material (Material *temp)
 Removes the indicated material from the pool. More...
 
static void write (std::ostream &out)
 Lists the contents of the material pool to the indicated output stream. More...
 

Detailed Description

The MaterialPool (there is only one in the universe) serves to unify different pointers to the same Material, so we do not (a) waste memory with many different Material objects that are all equivalent, and (b) waste time switching the graphics engine between different Material states that are really the same thing.

The idea is to create a temporary Material representing the lighting state you want to apply, then call get_material(), passing in your temporary Material. The return value will either be a new Material object, or it may be the the same object you supplied; in either case, it will have the same value.

Definition at line 36 of file materialPool.h.

Member Function Documentation

◆ garbage_collect()

int MaterialPool::garbage_collect ( )
inlinestatic

Releases only those materials in the pool that have a reference count of exactly 1; i.e.

only those materials that are not being used outside of the pool. Returns the number of materials released.

Definition at line 58 of file materialPool.I.

◆ get_material()

Material * MaterialPool::get_material ( Material temp)
inlinestatic

Returns a Material pointer that represents the same material described by temp, except that it is a shared pointer.

Each call to get_material() passing an equivalent Material pointer will return the same shared pointer.

If you modify the shared pointer, it will automatically disassociate it from the pool.

Also, the return value may be a different pointer than that passed in, or it may be the same pointer. In either case, the passed in pointer has now been sacrificed to the greater good and should not be used again (like any other PointerTo, it will be freed when the last reference count is removed).

Definition at line 31 of file materialPool.I.

◆ list_contents()

void MaterialPool::list_contents ( std::ostream &  out)
inlinestatic

Lists the contents of the material pool to the indicated output stream.

Definition at line 66 of file materialPool.I.

◆ release_all_materials()

void MaterialPool::release_all_materials ( )
inlinestatic

Releases all materials in the pool and restores the pool to the empty state.

Definition at line 48 of file materialPool.I.

◆ release_material()

void MaterialPool::release_material ( Material temp)
inlinestatic

Removes the indicated material from the pool.

Definition at line 39 of file materialPool.I.

◆ write()

void MaterialPool::write ( std::ostream &  out)
static

Lists the contents of the material pool to the indicated output stream.

Definition at line 25 of file materialPool.cxx.


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