#### 2.7.1 The IndexData class

This class summarises the information required to use a set of indexes to render geometry. It’s members are as follows:

indexStart

  The first index used by this piece of geometry; this can be useful for sharing a single index buffer among several geometry pieces.

indexCount

  The number of indexes used by this particular renderable.

indexBuffer

  The index buffer which is used to source the indexes.

#### Creating an Index Buffer

Index buffers are created using See The Hardware Buffer Manager just like vertex buffers, here’s how:

    HardwareIndexBufferSharedPtr ibuf = HardwareBufferManager::getSingleton().
    	createIndexBuffer(
    		HardwareIndexBuffer::IT_16BIT, // type of index
    		numIndexes, // number of indexes
    		HardwareBuffer::HBU_STATIC_WRITE_ONLY, // usage
    		false); // no shadow buffer

Once again, notice that the return type is a class rather than a pointer; this is reference counted so that the buffer is automatically destroyed when no more references are made to it. The parameters to the index buffer creation are:

indexType

  There are 2 types of index; 16-bit and 32-bit. They both perform the same way, except that the latter can address larger vertex buffers. If your buffer includes more than 65526 vertices, then you will need to use 32-bit indexes. Note that you should only use 32-bit indexes when you need to, since they incur more overhead than 16-bit vertices, and are not supported on some older hardware.

numIndexes

  The number of indexes in the buffer. As with vertex buffers, you should consider whether you can use a shared index buffer which is used by multiple pieces of geometry, since there can be performance advantages to switching index buffers less often.

usage

  This tells the system how you intend to use the buffer. See Buffer Usage

useShadowBuffer

  Tells the system whether you want this buffer backed by a system-memory copy. See Shadow Buffers