FBShaderManager Class Reference

FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager FBShaderManager
Inheritance diagram for FBShaderManager:
Inheritance graph
[legend]

List of all members.


Detailed Description

Shader manager.

This class provides access to the list of available shaders, both system shaders and user shaders. The list comes in two versions:ShaderTypeNames : which gives the internal names of the shaders,ShaderTypeNamesLocalized : uses the GUI names of the shaders.Both of these lists will have the same number of elements. The strings at position i in the lists refer to the same shader type. In cases where there is no localized version of the shader name, the internal name will be used in ShaderTypeNamesLocalized, thus ensuring consistency between the two lists.It also provides a generic shader creation method that uses the shader type name, internal or localized, to create the new shader instance.The destruction of shaders is achieved by calling the FBDelete method of a shader instance.The list of all the instantiated shaders can be obtained from instances of classes FBSystem or FBScene. Both classes have a Shaders property which lists the existing shader instances.Strings are used instead of enum, define or typedef values to refer to shader types as this proves to be more flexible.The system has a default shader of type 'Lighted'. Do not attempt to destroy it.The use of localized names in shader creation is non portable as it is dependent of the current language used by the application. The name may also change from one version to another. Using the internal name is the only way to ensure portable shader creation.Sample C++ code:

    // This could be a constant value in the code, coming from a custom
    // registry or simply coming from one of the list ShaderTypeNames
    // or ShaderTypeNamesLocalized.
    char* lDesiredShaderTypeName = "MyShader";

    // Shader creation.
    HFBShader lShader = NULL;
    FBShaderManager lShaderManager;

    if( lShaderManager.ShaderTypeNames.Find( lDesiredShaderTypeName ) != -1 ||
        lShaderManager.ShaderTypeNamesLocalized.Find( lDesiredShaderTypeName ) != -1 )
    {
        lShader = lShaderManager.CreateShader( lDesiredShaderTypeName );

        // Change its name, as the default name will be the type name.
        if( lShader )
        {
            lShader->Name = "My new shader";
        }
        else
        {
            // Warn about creation failure on a correctly registered
            // shader type.
        }
    }
    else
    {
        // Warn about an unknown shader type.
    }

    //
    // Do some work with the shader...
    // 

    if( lShader )
    {
        lShader->FBDelete();
    }

In the previous code sample, the lookup in the manager list is not necessary, as the call to CreateShader would have failed nonetheless and returned a NULL pointer.Sample Python code:

    from pyfbsdk import *

    lShaderManager = FBShaderManager()

    # This code will create one instance of each of the
    # available shader type, changing its name to add the
    # 'My ' prefix.
    for lShaderTypeName in lShaderManager.ShaderTypeNames:
        lShader = lShaderManager.CreateShader( lShaderTypeName )
        if lShader:
            lShader.Name = "My %s" % lShader.Name
            print "Created new shader '%s'" % lShader.Name
        else:
            print "Unable to create shader of type '%s'" % lShaderTypeName

Public Member Functions

  FBShaderManager ()
  Constructor.
FBShader  CreateShader (str pShaderTypeName)
  Creates a shader according to the shader type provided.

Public Attributes

FBStringList  ShaderTypeNames
  List of available shaders.
FBStringList  ShaderTypeNamesLocalized
  List of available shaders.

Constructor & Destructor Documentation

FBShaderManager (  ) 

Constructor.


Member Function Documentation

FBShader CreateShader ( str  pShaderTypeName  ) 

Creates a shader according to the shader type provided.

This method provides a generic way of creating shaders using the type name, internal or localized. The name of the new shader will be the same as the type name used, subject to changes according to the system's unique name policy.

Parameters:
pShaderTypeName  Name of the type of shader desired.
Returns:
A pointer to the newly created shader object, or a NULL pointer if the type name was not recognised.

Member Data Documentation

FBStringList ShaderTypeNames

List of available shaders.

FBStringList ShaderTypeNamesLocalized

List of available shaders.


Generated on Tue Feb 9 19:34:36 2010 for Python Reference Guide by  doxygen 1.5.3