The Nebula Device 3: Characters::SkinnedMeshRenderer Class Reference

The Nebula Device 3

Characters::SkinnedMeshRenderer Class Reference

#include <skinnedmeshrenderer.h>

Inheritance diagram for Characters::SkinnedMeshRenderer:

Win32::Win32SkinnedMeshRenderer Base::SkinnedMeshRendererBase Core::RefCounted

Detailed Description

Wrapper class for platform-specific skinned mesh rendering.

(C) 2008 Radon Labs GmbH

Public Types

typedef IndexT DrawHandle
 an abstract draw handle

Public Member Functions

 SkinnedMeshRenderer ()
 constructor
virtual ~SkinnedMeshRenderer ()
 destructor
Characters::SkinningTechnique::Code GetSkinningTechnique () const
 get the skinning technique used by the renderer
void Setup ()
 setup the renderer
void Discard ()
 discard the renderer
bool IsValid () const
 return true if renderer is valid
int GetRefCount () const
 get the current refcount
void AddRef ()
 increment refcount by one
void Release ()
 decrement refcount and destroy object if refcount is zero
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
const Util::StringGetClassName () const
 get the class name
Util::FourCC GetClassFourCC () const
 get the class FourCC code

Static Public Member Functions

static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

Protected Member Functions

void OnBeginFrame ()
 call once at beginning of frame
void OnEndFrame ()
 call once at end of frame (after rendering)
void BeginGatherSkins ()
 begin gathering software-skinned meshes
DrawHandle RegisterSoftwareSkinnedMesh (const Ptr< Characters::CharacterInstance > &charInst, const Ptr< CoreGraphics::Mesh > &mesh)
 update a software skinned mesh
void EndGatherSkins ()
 end gathering software-skinned meshes
void UpdateSoftwareSkinnedMeshes ()
 update software-skinned meshes
void DrawSoftwareSkinnedMesh (DrawHandle h, IndexT primGroupIndex)
 draw a software skinned mesh
void DrawGPUTextureSkinnedMesh (const Ptr< Characters::CharacterInstance > &charInst, const Ptr< CoreGraphics::Mesh > &mesh, IndexT primGroupIndex, const Ptr< CoreGraphics::ShaderVariable > &charInstShaderVar)
 draw a skinned mesh
IndexT AllocJointTextureRow ()
 allocate a row index in the joint texture
void FreeJointTextureRow (IndexT rowIndex)
 free a row index in the joint texture
void * AcquireJointTextureRowPointer (const Ptr< Characters::CharacterInstance > &charInst, SizeT &outRowPitch)
 get a pointer to the joint texture row for the given character instance

Member Function Documentation

SkinnedMeshRendererBase::DrawHandle Base::SkinnedMeshRendererBase::RegisterSoftwareSkinnedMesh ( const Ptr< Characters::CharacterInstance > &  charInst,
const Ptr< CoreGraphics::Mesh > &  mesh 
) [protected, inherited]

update a software skinned mesh

This method should only be called when RequiresSoftwareSkinning() returns true!

This registers a mesh for software-skinning in the UpdateSoftwareSkinnedMeshes() which must be called after EndGatherSkins().

This method may be called more then once per character-instance/mesh combination! The method will drop duplicates.

void Base::SkinnedMeshRendererBase::UpdateSoftwareSkinnedMeshes (  )  [protected, inherited]

update software-skinned meshes

On platforms with software-skinning, this method should perform the skinning for all meshes gathered during the GatherSkins pass.

void Base::SkinnedMeshRendererBase::DrawSoftwareSkinnedMesh ( DrawHandle  h,
IndexT  primGroupIndex 
) [protected, inherited]

draw a software skinned mesh

This method should only be called when RequiresSoftwareSkinning() returns true!

Software-skinning platforms call this method with the DrawHandle returned by UpdateSoftwareSkinnedMesh() to draw a portion of the skinned mesh/

int Core::RefCounted::GetRefCount (  )  const [inline, inherited]

get the current refcount

Return the current refcount of the object.

void Core::RefCounted::AddRef (  )  [inline, inherited]

increment refcount by one

Increment the refcount of the object.

void Core::RefCounted::Release (  )  [inline, inherited]

decrement refcount and destroy object if refcount is zero

Decrement the refcount and destroy object if refcount is zero.

const Util::String & Core::RefCounted::GetClassName (  )  const [inline, inherited]

get the class name

Get the class name of the object.

Util::FourCC Core::RefCounted::GetClassFourCC (  )  const [inline, inherited]

get the class FourCC code

Get the class FourCC of the object.

void Core::RefCounted::DumpRefCountingLeaks (  )  [static, inherited]

dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

This method should be called as the very last before an application exits.