Ogre::D3D11VertexDeclaration Class Reference

Specialisation of VertexDeclaration for D3D11. More...

`#include <OgreD3D11VertexDeclaration.h>`

Inheritance diagram for Ogre::D3D11VertexDeclaration:
[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

| D3D11VertexDeclaration (D3D11Device &device)
| ~D3D11VertexDeclaration ()
const VertexElement & | addElement (unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
| See VertexDeclaration.
const VertexElement & | insertElement (unsigned short atPosition, unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
| See VertexDeclaration.
void | removeElement (unsigned short elem_index)
| See VertexDeclaration.
void | removeElement (VertexElementSemantic semantic, unsigned short index=0)
| See VertexDeclaration.
void | removeAllElements (void)
| See VertexDeclaration.
void | modifyElement (unsigned short elem_index, unsigned short source, size_t offset, VertexElementType theType, VertexElementSemantic semantic, unsigned short index=0)
| See VertexDeclaration.
D3D11_INPUT_ELEMENT_DESC * | getD3DVertexDeclaration (D3D11HLSLProgram *boundVertexProgram, VertexBufferBinding *binding)
void | bindToShader (D3D11HLSLProgram *boundVertexProgram, VertexBufferBinding *binding)
size_t | getElementCount (void) const
| Get the number of elements in the declaration.
const VertexElementList & | getElements (void) const
| Gets read-only access to the list of vertex elements.
const VertexElement * | getElement (unsigned short index) const
| Get a single element.
void | sort (void)
| Sorts the elements in this list to be compatible with the maximum number of rendering APIs / graphics cards.
void | closeGapsInSource (void)
| Remove any gaps in the source buffer list used by this declaration.
VertexDeclaration * | getAutoOrganisedDeclaration (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.
unsigned short | getMaxSource (void) const
| Gets the index of the highest source value referenced by this declaration.
virtual const VertexElement * | findElementBySemantic (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.
virtual size_t | getVertexSize (unsigned short source) const
| Gets the vertex size defined by this declaration for a given source.
virtual unsigned short | getNextFreeTextureCoordinate () const
| Return the index of the next free texture coordinate set which may be added to this declaration.
virtual VertexDeclaration * | clone (HardwareBufferManagerBase *mgr=0) const
| Clones this declaration.
bool | operator== (const VertexDeclaration &rhs) const
bool | operator!= (const VertexDeclaration &rhs) const
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)
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 *)

## Static Public Member Functions

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

## Protected Types

typedef map< D3D11HLSLProgram *, ID3D11InputLayout * >::type | ShaderToILayoutMap
typedef ShaderToILayoutMap::iterator | ShaderToILayoutMapIterator
typedef map< D3D11HLSLProgram *, D3D11_INPUT_ELEMENT_DESC * > ::type | ShaderToInputDesc
typedef ShaderToInputDesc::iterator | ShaderToInputDescIterator

## Protected Member Functions

ID3D11InputLayout * | getILayoutByShader (D3D11HLSLProgram *boundVertexProgram, VertexBufferBinding *binding)
| Gets the D3D11-specific vertex declaration.

## Protected Attributes

D3D11Device & | mlpD3DDevice
bool | mNeedsRebuild
ShaderToInputDesc | mD3delems
ShaderToILayoutMap | mShaderToILayoutMap
VertexElementList | mElementList

## Detailed Description

Specialisation of VertexDeclaration for D3D11.

Definition at line 38 of file OgreD3D11VertexDeclaration.h.

## Member Typedef Documentation

typedef map<D3D11HLSLProgram*, ID3D11InputLayout*>::type Ogre::D3D11VertexDeclaration::ShaderToILayoutMap`[protected]`

Definition at line 45 of file OgreD3D11VertexDeclaration.h.

typedef ShaderToILayoutMap::iterator Ogre::D3D11VertexDeclaration::ShaderToILayoutMapIterator`[protected]`

Definition at line 46 of file OgreD3D11VertexDeclaration.h.

typedef map<D3D11HLSLProgram*, D3D11_INPUT_ELEMENT_DESC*>::type Ogre::D3D11VertexDeclaration::ShaderToInputDesc`[protected]`

Definition at line 47 of file OgreD3D11VertexDeclaration.h.

typedef ShaderToInputDesc::iterator Ogre::D3D11VertexDeclaration::ShaderToInputDescIterator`[protected]`

Definition at line 48 of file OgreD3D11VertexDeclaration.h.

typedef list<VertexElement>::type Ogre::VertexDeclaration::VertexElementList`[inherited]`

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

Definition at line 321 of file OgreHardwareVertexBuffer.h.

## Constructor & Destructor Documentation

Ogre::D3D11VertexDeclaration::D3D11VertexDeclaration | ( | D3D11Device & | device | ) |

Ogre::D3D11VertexDeclaration::~D3D11VertexDeclaration | ( |  | ) |

## Member Function Documentation

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

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::D3D11VertexDeclaration::bindToShader | ( | D3D11HLSLProgram * | boundVertexProgram,
|  | VertexBufferBinding * | binding
| ) |  |

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

Clones this declaration.

Parameters:

  mgr | Optional 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.

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:

  source | The 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:

  skeletalAnimation | Whether this vertex data is going to be skeletally animated
  vertexAnimation | Whether this vertex data is going to be vertex animated
  vertexAnimationNormals | Whether vertex data animation is going to include normals animation

D3D11_INPUT_ELEMENT_DESC* Ogre::D3D11VertexDeclaration::getD3DVertexDeclaration | ( | D3D11HLSLProgram * | boundVertexProgram,
|  | VertexBufferBinding * | binding
| ) |  |

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 332 of file OgreHardwareVertexBuffer.h.

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

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

ID3D11InputLayout* Ogre::D3D11VertexDeclaration::getILayoutByShader | ( | D3D11HLSLProgram * | boundVertexProgram,
|  | VertexBufferBinding * | binding
| ) |  | `[protected]`

Gets the D3D11-specific vertex declaration.

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::D3D11VertexDeclaration::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.

void Ogre::D3D11VertexDeclaration::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.

template<class Alloc >

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

Definition at line 95 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 101 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 107 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 112 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 118 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 67 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 72 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 78 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 85 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 90 of file OgreMemoryAllocatedObject.h.

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

Definition at line 481 of file OgreHardwareVertexBuffer.h.

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

Definition at line 464 of file OgreHardwareVertexBuffer.h.

References Ogre::VertexDeclaration::mElementList.

void Ogre::D3D11VertexDeclaration::removeAllElements | ( | void |  | ) | `[virtual]`

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::D3D11VertexDeclaration::removeElement | ( | unsigned short | elem_index | ) | `[virtual]`

See VertexDeclaration.

Reimplemented from Ogre::VertexDeclaration.

void Ogre::D3D11VertexDeclaration::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 bool Ogre::VertexDeclaration::vertexElementLess | ( | const VertexElement & | e1,
|  | const VertexElement & | e2
| ) |  | `[static, inherited]`

Sort routine for vertex elements.

## Member Data Documentation

ShaderToInputDesc Ogre::D3D11VertexDeclaration::mD3delems`[protected]`

Definition at line 50 of file OgreD3D11VertexDeclaration.h.

VertexElementList Ogre::VertexDeclaration::mElementList`[protected, inherited]`

Definition at line 325 of file OgreHardwareVertexBuffer.h.

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

D3D11Device& Ogre::D3D11VertexDeclaration::mlpD3DDevice`[protected]`

Definition at line 41 of file OgreD3D11VertexDeclaration.h.

bool Ogre::D3D11VertexDeclaration::mNeedsRebuild`[protected]`

Definition at line 43 of file OgreD3D11VertexDeclaration.h.

ShaderToILayoutMap Ogre::D3D11VertexDeclaration::mShaderToILayoutMap`[protected]`

Definition at line 52 of file OgreD3D11VertexDeclaration.h.

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

- OgreD3D11VertexDeclaration.h

Copyright © 2012 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Sun Sep 2 2012 07:27:47