MDrawRegistry Class Reference


Detailed Description

Access the registry associating node types with custom draw classes.

This class provides a means to register custom draw overrides to be used by Viewport 2.0 to draw dependency nodes.

The registry is based on classification strings. Each draw override must be registered with a classification string and any node type with a matching classification string will be drawn using the registered draw override.

#include <MDrawRegistry.h>

List of all members.

Static Public Member Functions

static MStatus registerShaderOverrideCreator (const MString &drawClassification, const MString &registrantId, ShaderOverrideCreator creator)
 Register an implementation of MPxShaderOverride to use with nodes that have the specified, draw-specific classification string.
static MStatus deregisterShaderOverrideCreator (const MString &drawClassification, const MString &registrantId)
 Deregister an implementation of MPxShaderOverride.
static MStatus registerGeometryOverrideCreator (const MString &drawClassification, const MString &registrantId, GeometryOverrideCreator creator)
 Register an implementation of MPxGeometryOverride to use with nodes that have the specified, draw-specific classification string.
static MStatus deregisterGeometryOverrideCreator (const MString &drawClassification, const MString &registrantId)
 Deregister an implementation of MPxGeometryOverride.
static MStatus registerDrawOverrideCreator (const MString &drawClassification, const MString &registrantId, DrawOverrideCreator creator)
 Register an implementation of MPxDrawOverride to use with DAG objects that have the specified, draw-specific classification string.
static MStatus deregisterDrawOverrideCreator (const MString &drawClassification, const MString &registrantId)
 Deregister an implementation of MPxDrawOverride.
static MStatus registerVertexBufferGenerator (const MString &bufferName, VertexBufferGeneratorCreator creator)
 Register an implementation of MPxVertexBufferGenerator to provide custom vertex streams for shapes.
static MStatus deregisterVertexBufferGenerator (const MString &bufferName)
 Deregister an implementation of MPxVertexBufferGenerator.
static MStatus registerVertexBufferMutator (const MString &bufferName, VertexBufferMutatorCreator creator)
 Register an implementation of MPxVertexBufferMutator to provide custom vertex streams for shapes.
static MStatus deregisterVertexBufferMutator (const MString &bufferName)
 Deregister an implementation of MPxVertexBufferMutator
static MStatus registerPrimitiveGenerator (const MString &primitiveType, PrimitiveGeneratorCreator creator)
 Register an implementation of MPxPrimitiveGenerator to generate custom primitive types for shapes.
static MStatus deregisterPrimitiveGenerator (const MString &primitiveType)
 Deregister an implementation of MPxPrimitiveGenerator
static MStatus registerIndexBufferMutator (const MString &primitiveType, IndexBufferMutatorCreator creator)
 Register an implementation of MPxIndexBufferMutator to generate custom primitive types for shapes.
static MStatus deregisterIndexBufferMutator (const MString &primitiveType)
 Deregister an implementation of MPxIndexBufferMutator
static const char * className ()
 Returns the name of this class.

Member Function Documentation

MStatus registerShaderOverrideCreator ( const MString drawClassification,
const MString registrantId,
ShaderOverrideCreator  creator 
) [static]

Register an implementation of MPxShaderOverride to use with nodes that have the specified, draw-specific classification string.

For each shading node in the scene, the closest matching registered override will be used to create a shading effect for drawing in the viewport.

For example, say the following overrides are registered under the given classification strings: myShaderOverride - "drawdb/shaders/myLibrary/myShader" myLibraryOverride - "drawdb/shaders/myLibrary" Then all shaders with classification string "drawdb/shaders/myLibrary/myShader" will be evaluated by myShaderOverride while a shader with the classification string "drawdb/shaders/myLibrary/myShinyShader" would be evaluated by myLibraryOverride.

Note that for Viewport 2.0 to recognize a node as a shading node, it must have a classification string beginning with "drawdb/shader".

If multiple implementations are registered for the same classification, the most recently registered will be used. It is an error to try to register multiple implementations for the same classification using the same registrant id.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration
[in]creatorPointer to a function that creates the override
Returns:
Examples:
hwColorPerVertexShader.cpp, hwPhongShader.cpp, and pluginMain.cpp.
MStatus deregisterShaderOverrideCreator ( const MString drawClassification,
const MString registrantId 
) [static]

Deregister an implementation of MPxShaderOverride.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration, must match the name used to register the override.
Returns:
Examples:
hwColorPerVertexShader.cpp, hwPhongShader.cpp, and pluginMain.cpp.
MStatus registerGeometryOverrideCreator ( const MString drawClassification,
const MString registrantId,
GeometryOverrideCreator  creator 
) [static]

Register an implementation of MPxGeometryOverride to use with nodes that have the specified, draw-specific classification string.

For each DAG object in the scene, the closest matching registered override will be used to generate geometry for drawing that object in Viewport 2.0.

For example, say the following overrides are registered under the given classification strings: myShapeOverride - "drawdb/geometry/myLibrary/myShape" myLibraryOverride - "drawdb/geometry/myLibrary" Then all DAG objects with classification string "drawdb/geometry/myLibrary/myShape" will have draw geometry generated through myShapeOverride while DAG objects with the classification string "drawdb/geometry/myLibrary/myPointyShape" will have draw geometry generated through myLibraryOverride.

Note that for Viewport 2.0 to recognize a DAG object as a piece of drawable geometry, it must have a classification string beginning with "drawdb/geometry".

If multiple implementations are registered for the same classification, the most recently registered will be used. It is an error to try to register multiple implementations for the same classification using the same registrant id.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration
[in]creatorPointer to a function that creates an instance of the override class
Returns:
Examples:
apiMeshShape.cpp.
MStatus deregisterGeometryOverrideCreator ( const MString drawClassification,
const MString registrantId 
) [static]

Deregister an implementation of MPxGeometryOverride.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration, must match the name used to register the override.
Returns:
Examples:
apiMeshShape.cpp.
MStatus registerDrawOverrideCreator ( const MString drawClassification,
const MString registrantId,
DrawOverrideCreator  creator 
) [static]

Register an implementation of MPxDrawOverride to use with DAG objects that have the specified, draw-specific classification string.

For each DAG object in the scene whose classification string is satisfied by the registered classification string, the draw() method of the given MPxDrawOverride implementation will be called to draw the object in Viewport 2.0.

For example, say the following overrides are registered under the given classification strings: myShapeDrawOverride - "drawdb/geometry/myLibrary/myShape" myLibraryDrawOverride - "drawdb/geometry/myLibrary" Then all DAG objects with classification string "drawdb/geometry/myLibrary/myShape" will be drawn through myShapeDrawOverride while DAG objects with the classification string "drawdb/geometry/myLibrary/myPointyShape" would be drawn through myLibraryDrawOverride.

Note that for Viewport 2.0 to recognize a DAG object as a piece of drawable geometry, it must have a classification string beginning with "drawdb/geometry".

If multiple implementations are registered for the same classification, the most recently registered will be used. It is an error to try to register multiple implementations for the same classification using the same registrant id.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration
[in]creatorPointer to a function that creates an instance of the draw override class
Returns:
Examples:
footPrintNode.cpp, squareScaleManip.cpp, and swissArmyManip.cpp.
MStatus deregisterDrawOverrideCreator ( const MString drawClassification,
const MString registrantId 
) [static]

Deregister an implementation of MPxDrawOverride.

Parameters:
[in]drawClassificationThe draw-specific classification string
[in]registrantIdUnique name to identify registration, must match the name used to register the override.
Returns:
Examples:
footPrintNode.cpp, squareScaleManip.cpp, and swissArmyManip.cpp.
MStatus registerVertexBufferGenerator ( const MString bufferName,
VertexBufferGeneratorCreator  creator 
) [static]

Register an implementation of MPxVertexBufferGenerator to provide custom vertex streams for shapes.

These vertex streams are opaque to the system so a registry is used to add buffer generators to the system. The bufferName is used to match the Name in a MVertexBufferDescriptor. A static creator function is supplied to initialize the generator.

Parameters:
[in]bufferNameUnique name to identify the custom stream this generator can produce.
[in]creatorA static function pointer used to create a new instance of the generator.
Returns:
  • MS::kSuccess Registration was successful
  • MS::kFailure A generator was already registered for this buffer name. Unregister the existing generator first if you would like to replace it.
MStatus deregisterVertexBufferGenerator ( const MString bufferName) [static]

Deregister an implementation of MPxVertexBufferGenerator.

Parameters:
[in]bufferNameUnique name to identify the custom stream this generator can produce.
Returns:
MStatus registerVertexBufferMutator ( const MString bufferName,
VertexBufferMutatorCreator  creator 
) [static]

Register an implementation of MPxVertexBufferMutator to provide custom vertex streams for shapes.

These vertex streams are opaque to the system so a registry is used to add buffer mutators to the system. The bufferName is used to match the Name in a MVertexBufferDescriptor. A static creator function is supplied to initialize the mutator. While the MPxVertexBufferGenerator will allow plugins to CREATE vertex buffers, the MPxVertexBufferMutator will allow plugins to MODIFY the content of vertex buffers created by the application. For example it can be used to swizzle a position vertex stream (change x, y, z to z, y, x) or to swap the U & V coordinates.

Parameters:
[in]bufferNameUnique name to identify the custom stream this mutator can produce.
[in]creatorA static function pointer used to create a new instance of the mutator.
Returns:
  • MS::kSuccess Registration was successful
  • MS::kFailure A generator was already registered for this buffer name. Unregister the existing mutator first if you would like to replace it.
MStatus deregisterVertexBufferMutator ( const MString bufferName) [static]

Deregister an implementation of MPxVertexBufferMutator

Parameters:
[in]bufferNameUnique name to identify the custom stream this mutator can produce.
Returns:
MStatus registerPrimitiveGenerator ( const MString primitiveType,
PrimitiveGeneratorCreator  creator 
) [static]

Register an implementation of MPxPrimitiveGenerator to generate custom primitive types for shapes.

These primitives are opaque to the system so a registry is used to add primitive generator to the system.

The primitiveType is used to match the required primitive type reported by a shader override. A static creator function is supplied to initialize the provider.

Parameters:
[in]primitiveTypeUnique name to identify the custom primitive type this generator can produce.
[in]creatorA static function pointer used to create a new instance of the generator.
Returns:
  • MS::kSuccess Registration was successful
  • MS::kFailure A generator was already registered for this primitive type. Unregister the existing generator first if you would like to replace it.
MStatus deregisterPrimitiveGenerator ( const MString primitiveType) [static]

Deregister an implementation of MPxPrimitiveGenerator

Parameters:
[in]primitiveTypeUnique name to identify the custom primitive type this generator can produce.
Returns:
MStatus registerIndexBufferMutator ( const MString primitiveType,
IndexBufferMutatorCreator  creator 
) [static]

Register an implementation of MPxIndexBufferMutator to generate custom primitive types for shapes.

These mutators are opaque to the system so a registry is used to add them to the system.

The primitiveType is used to match the required primitive type reported by a shader override. A static creator function is supplied to initialize the provider.

Parameters:
[in]primitiveTypeUnique name to identify the custom primitive type this mutator can produce.
[in]creatorA static function pointer used to create a new instance of the mutator.
Returns:
  • MS::kSuccess Registration was successful
  • MS::kFailure A mutator was already registered for this primitive type. Unregister the existing mutator first if you would like to replace it.
MStatus deregisterIndexBufferMutator ( const MString primitiveType) [static]

Deregister an implementation of MPxIndexBufferMutator

Parameters:
[in]primitiveTypeUnique name to identify the custom primitive type this mutator can produce.
Returns:
const char * className ( ) [static]

Returns the name of this class.

Returns:
The name of this class.

MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry
MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry MDrawRegistry