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

This is the preferred interface for loading shaders for the TextNode system. More...

Static Public Member Functions

static addShader (const Filename filename, Shader shader)
 Adds the indicated already-loaded shader to the pool. More...
 
static int garbageCollect ()
 Releases only those shaders in the pool that have a reference count of exactly 1; i.e. More...
 
static bool hasShader (const Filename filename)
 Returns true if the shader has ever been loaded, false otherwise. More...
 
static listContents (Ostream out)
 Lists the contents of the shader pool to the indicated output stream. More...
 
static const Shader loadShader (const Filename filename)
 Loads the given filename up into a shader, if it has not already been loaded, and returns the new shader. More...
 
static releaseAllShaders ()
 Releases all shaders in the pool and restores the pool to the empty state. More...
 
static releaseShader (const Filename filename)
 Removes the indicated shader from the pool, indicating it will never be loaded again; the shader may then be freed. More...
 
static bool verifyShader (const Filename filename)
 Loads the given filename up into a shader, if it has not already been loaded, and returns true to indicate success, or false to indicate failure. More...
 
static write (Ostream out)
 Lists the contents of the shader pool to the indicated output stream. More...
 

Detailed Description

This is the preferred interface for loading shaders for the TextNode system.

It is similar to ModelPool and TexturePool in that it unifies references to the same filename.

Member Function Documentation

◆ addShader()

static addShader ( const Filename  filename,
Shader  shader 
)
static

Adds the indicated already-loaded shader to the pool.

The shader will always replace any previously-loaded shader in the pool that had the same filename.

◆ garbageCollect()

static int garbageCollect ( )
static

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

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

◆ hasShader()

static bool hasShader ( const Filename  filename)
static

Returns true if the shader has ever been loaded, false otherwise.

◆ listContents()

static listContents ( Ostream  out)
static

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

◆ loadShader()

static const Shader loadShader ( const Filename  filename)
static

Loads the given filename up into a shader, if it has not already been loaded, and returns the new shader.

If a shader with the same filename was previously loaded, returns that one instead. If the shader file cannot be found, returns NULL.

◆ releaseAllShaders()

static releaseAllShaders ( )
static

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

◆ releaseShader()

static releaseShader ( const Filename  filename)
static

Removes the indicated shader from the pool, indicating it will never be loaded again; the shader may then be freed.

If this function is never called, a reference count will be maintained on every shader every loaded, and shaders will never be freed.

◆ verifyShader()

static bool verifyShader ( const Filename  filename)
static

Loads the given filename up into a shader, if it has not already been loaded, and returns true to indicate success, or false to indicate failure.

If this returns true, it is guaranteed that a subsequent call to load_shader() with the same shader name will return a valid Shader pointer.

◆ write()

static write ( Ostream  out)
static

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