Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
Ogre::D3D9VertexDeclaration Class Reference

Specialisation of VertexDeclaration for D3D9. More...

#include <OgreD3D9VertexDeclaration.h>

Inheritance diagram for Ogre::D3D9VertexDeclaration:
Inheritance graph
[legend]

List of all members.

Public Types

typedef list< VertexElement >::type VertexElementList
 Defines the list of vertex elements that makes up this declaration.

Public Member Functions

 D3D9VertexDeclaration ()
 ~D3D9VertexDeclaration ()
const VertexElementaddElement (unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
 See VertexDeclaration.
virtual VertexDeclarationclone (HardwareBufferManagerBase *mgr=0) const
 Clones this declaration.
void closeGapsInSource (void)
 Remove any gaps in the source buffer list used by this declaration.
virtual const VertexElementfindElementBySemantic (VertexElementSemantic sem, unsigned short index=0) const
 Finds a VertexElement with the given semantic, and index if there is more than one element with the same semantic.
virtual VertexElementList findElementsBySource (unsigned short source) const
 Based on the current elements, gets the size of the vertex for a given buffer source.
VertexDeclarationgetAutoOrganisedDeclaration (bool skeletalAnimation, bool vertexAnimation, bool vertexAnimationNormals) const
 Generates a new VertexDeclaration for optimal usage based on the current vertex declaration, which can be used with VertexData::reorganiseBuffers later if you wish, or simply used as a template.
IDirect3DVertexDeclaration9 * getD3DVertexDeclaration (VertexDeclaration *globalDeclaration, bool useGlobalInstancingVertexBufferIsAvailable)
 Gets the D3D9-specific vertex declaration.
const VertexElementgetElement (unsigned short index) const
 Get a single element.
size_t getElementCount (void) const
 Get the number of elements in the declaration.
const VertexElementListgetElements (void) const
 Gets read-only access to the list of vertex elements.
unsigned short getMaxSource (void) const
 Gets the index of the highest source value referenced by this declaration.
virtual unsigned short getNextFreeTextureCoordinate () const
 Return the index of the next free texture coordinate set which may be added to this declaration.
virtual size_t getVertexSize (unsigned short source) const
 Gets the vertex size defined by this declaration for a given source.
const VertexElementinsertElement (unsigned short atPosition, unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
 See VertexDeclaration.
void modifyElement (unsigned short elem_index, unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
 See VertexDeclaration.
virtual void notifyOnDeviceCreate (IDirect3DDevice9 *d3d9Device)
virtual void notifyOnDeviceDestroy (IDirect3DDevice9 *d3d9Device)
virtual void notifyOnDeviceLost (IDirect3DDevice9 *d3d9Device)
virtual void notifyOnDeviceReset (IDirect3DDevice9 *d3d9Device)
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr, const char *, int, const char *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, const char *, int, const char *)
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
void * operator new (size_t sz)
void * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)
bool operator!= (const VertexDeclaration &rhs) const
bool operator== (const VertexDeclaration &rhs) const
void removeAllElements (void)
 See VertexDeclaration.
void removeElement (unsigned short elem_index)
 See VertexDeclaration.
void removeElement (VertexElementSemantic semantic, unsigned short index=0)
 See VertexDeclaration.
void sort (void)
 Sorts the elements in this list to be compatible with the maximum number of rendering APIs / graphics cards.

Static Public Member Functions

static void lockDeviceAccess ()
static void unlockDeviceAccess ()
static bool vertexElementLess (const VertexElement &e1, const VertexElement &e2)
 Sort routine for vertex elements.

Protected Types

typedef
DeviceToDeclarationMap::iterator 
DeviceToDeclarationIterator
typedef map< IDirect3DDevice9
*, IDirect3DVertexDeclaration9 * >
::type 
DeviceToDeclarationMap

Protected Member Functions

void convertElement (const VertexElement &element, D3DVERTEXELEMENT9 &dxElement)
 OGRE_STATIC_MUTEX (msDeviceAccessMutex)
void releaseDeclaration ()

Protected Attributes

VertexElementList mElementList
VertexDeclarationmLastUsedGlobalDeclaration
DeviceToDeclarationMap mMapDeviceToDeclaration
bool mUsedGlobalDeclaration

Detailed Description

Specialisation of VertexDeclaration for D3D9.

Definition at line 38 of file OgreD3D9VertexDeclaration.h.


Member Typedef Documentation

typedef DeviceToDeclarationMap::iterator Ogre::D3D9VertexDeclaration::DeviceToDeclarationIterator [protected]

Definition at line 83 of file OgreD3D9VertexDeclaration.h.

typedef map<IDirect3DDevice9*, IDirect3DVertexDeclaration9*>::type Ogre::D3D9VertexDeclaration::DeviceToDeclarationMap [protected]

Definition at line 82 of file OgreD3D9VertexDeclaration.h.

Defines the list of vertex elements that makes up this declaration.

Definition at line 341 of file OgreHardwareVertexBuffer.h.


Constructor & Destructor Documentation


Member Function Documentation

const VertexElement& Ogre::D3D9VertexDeclaration::addElement ( unsigned short  source,
size_t  offset,
VertexElementType  theType,
VertexElementSemantic  semantic,
unsigned short  index = 0 
) [virtual]

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

virtual VertexDeclaration* Ogre::VertexDeclaration::clone ( HardwareBufferManagerBase mgr = 0) const [virtual, inherited]

Clones this declaration.

Parameters:
mgrOptional HardwareBufferManager to use for creating the clone (if null, use the current default).
void Ogre::VertexDeclaration::closeGapsInSource ( void  ) [inherited]

Remove any gaps in the source buffer list used by this declaration.

Remarks:
This is useful if you've modified a declaration and want to remove any gaps in the list of buffers being used. Note, however, that if this declaration is already being used with a VertexBufferBinding, you will need to alter that too. This method is mainly useful when reorganising buffers based on an altered declaration.
Note:
This will cause the vertex declaration to be re-sorted.
void Ogre::D3D9VertexDeclaration::convertElement ( const VertexElement element,
D3DVERTEXELEMENT9 &  dxElement 
) [protected]
virtual const VertexElement* Ogre::VertexDeclaration::findElementBySemantic ( VertexElementSemantic  sem,
unsigned short  index = 0 
) const [virtual, inherited]

Finds a VertexElement with the given semantic, and index if there is more than one element with the same semantic.

Remarks:
If the element is not found, this method returns null.
virtual VertexElementList Ogre::VertexDeclaration::findElementsBySource ( unsigned short  source) const [virtual, inherited]

Based on the current elements, gets the size of the vertex for a given buffer source.

Parameters:
sourceThe buffer binding index for which to get the vertex size. Gets a list of elements which use a given source.
Remarks:
Note that the list of elements is returned by value therefore is separate from the declaration as soon as this method returns.
VertexDeclaration* Ogre::VertexDeclaration::getAutoOrganisedDeclaration ( bool  skeletalAnimation,
bool  vertexAnimation,
bool  vertexAnimationNormals 
) const [inherited]

Generates a new VertexDeclaration for optimal usage based on the current vertex declaration, which can be used with VertexData::reorganiseBuffers later if you wish, or simply used as a template.

Remarks:
Different buffer organisations and buffer usages will be returned depending on the parameters passed to this method.
Parameters:
skeletalAnimationWhether this vertex data is going to be skeletally animated
vertexAnimationWhether this vertex data is going to be vertex animated
vertexAnimationNormalsWhether vertex data animation is going to include normals animation
IDirect3DVertexDeclaration9* Ogre::D3D9VertexDeclaration::getD3DVertexDeclaration ( VertexDeclaration globalDeclaration,
bool  useGlobalInstancingVertexBufferIsAvailable 
)

Gets the D3D9-specific vertex declaration.

const VertexElement* Ogre::VertexDeclaration::getElement ( unsigned short  index) const [inherited]

Get a single element.

size_t Ogre::VertexDeclaration::getElementCount ( void  ) const [inherited]

Get the number of elements in the declaration.

Definition at line 352 of file OgreHardwareVertexBuffer.h.

const VertexElementList& Ogre::VertexDeclaration::getElements ( void  ) const [inherited]

Gets read-only access to the list of vertex elements.

unsigned short Ogre::VertexDeclaration::getMaxSource ( void  ) const [inherited]

Gets the index of the highest source value referenced by this declaration.

virtual unsigned short Ogre::VertexDeclaration::getNextFreeTextureCoordinate ( ) const [virtual, inherited]

Return the index of the next free texture coordinate set which may be added to this declaration.

virtual size_t Ogre::VertexDeclaration::getVertexSize ( unsigned short  source) const [virtual, inherited]

Gets the vertex size defined by this declaration for a given source.

const VertexElement& Ogre::D3D9VertexDeclaration::insertElement ( unsigned short  atPosition,
unsigned short  source,
size_t  offset,
VertexElementType  theType,
VertexElementSemantic  semantic,
unsigned short  index = 0 
) [virtual]

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

static void Ogre::D3D9Resource::lockDeviceAccess ( ) [static, inherited]
void Ogre::D3D9VertexDeclaration::modifyElement ( unsigned short  elem_index,
unsigned short  source,
size_t  offset,
VertexElementType  theType,
VertexElementSemantic  semantic,
unsigned short  index = 0 
) [virtual]

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

virtual void Ogre::D3D9VertexDeclaration::notifyOnDeviceCreate ( IDirect3DDevice9 *  d3d9Device) [virtual]

Reimplemented from Ogre::D3D9Resource.

virtual void Ogre::D3D9VertexDeclaration::notifyOnDeviceDestroy ( IDirect3DDevice9 *  d3d9Device) [virtual]

Reimplemented from Ogre::D3D9Resource.

virtual void Ogre::D3D9Resource::notifyOnDeviceLost ( IDirect3DDevice9 *  d3d9Device) [virtual, inherited]
virtual void Ogre::D3D9Resource::notifyOnDeviceReset ( IDirect3DDevice9 *  d3d9Device) [virtual, inherited]
Ogre::D3D9Resource::OGRE_STATIC_MUTEX ( msDeviceAccessMutex  ) [protected, inherited]
template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr) [inherited]

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
) [inherited]

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr) [inherited]

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz) [inherited]

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
) [inherited]

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz) [inherited]

Definition at line 91 of file OgreMemoryAllocatedObject.h.

bool Ogre::VertexDeclaration::operator!= ( const VertexDeclaration rhs) const [inherited]

Definition at line 501 of file OgreHardwareVertexBuffer.h.

bool Ogre::VertexDeclaration::operator== ( const VertexDeclaration rhs) const [inherited]

Definition at line 484 of file OgreHardwareVertexBuffer.h.

References Ogre::VertexDeclaration::mElementList.

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::D3D9VertexDeclaration::removeElement ( unsigned short  elem_index) [virtual]

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::D3D9VertexDeclaration::removeElement ( VertexElementSemantic  semantic,
unsigned short  index = 0 
) [virtual]

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::VertexDeclaration::sort ( void  ) [inherited]

Sorts the elements in this list to be compatible with the maximum number of rendering APIs / graphics cards.

Remarks:
Older graphics cards require vertex data to be presented in a more rigid way, as defined in the main documentation for this class. As well as the ordering being important, where shared source buffers are used, the declaration must list all the elements for each source in turn.
static void Ogre::D3D9Resource::unlockDeviceAccess ( ) [static, inherited]
static bool Ogre::VertexDeclaration::vertexElementLess ( const VertexElement e1,
const VertexElement e2 
) [static, inherited]

Sort routine for vertex elements.


Member Data Documentation

Definition at line 345 of file OgreHardwareVertexBuffer.h.

Referenced by Ogre::VertexDeclaration::operator==().

Definition at line 86 of file OgreD3D9VertexDeclaration.h.

Definition at line 85 of file OgreD3D9VertexDeclaration.h.

Definition at line 87 of file OgreD3D9VertexDeclaration.h.


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

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:40:59