3ds Max C++ API Reference
IndexBufferHandle Class Reference

IndexBufferHandle is a memory buffer that contain index data. More...

#include <IndexBufferHandle.h>

+ Inheritance diagram for IndexBufferHandle:

Public Member Functions

GraphicsDriverAPI IndexBufferHandle ()
 
GraphicsDriverAPI IndexBufferHandle (const IndexBufferHandle &from)
 
GraphicsDriverAPI IndexBufferHandleoperator= (const IndexBufferHandle &from)
 
virtual GraphicsDriverAPI ~IndexBufferHandle ()
 
GraphicsDriverAPI bool Initialize (IndexType type, size_t numIndices, void *initialData=nullptr, BufferUsageType usage=BufferUsageStatic, AccessType access=ReadWriteAcess, BufferPoolType pool=BufferPoolTypeSystemBuffer)
 Initialize a index buffer with initial data. More...
 
GraphicsDriverAPI IndexType GetType () const
 Get the type of the index buffer. More...
 
GraphicsDriverAPI size_t GetNumberOfIndices () const
 Get the number of indices of this buffer. More...
 
GraphicsDriverAPI unsigned char * Lock (size_t offset, size_t numberOfIndices, AccessType accessType)
 This function is used for reading/writing data from/into the index buffer. More...
 
GraphicsDriverAPI void Unlock ()
 Unlock the buffer to update. More...
 
GraphicsDriverAPI BufferUsageType GetBufferUsageType () const
 Gets the buffer usage type. More...
 
GraphicsDriverAPI BufferPoolType GetBufferPoolType () const
 Gets the buffer pool type. More...
 
GraphicsDriverAPI AccessType GetBufferAccessType () const
 Gets the buffer access type. More...
 
GraphicsDriverAPI IndexBufferHandle Clone ()
 Clone the buffer. More...
 
GraphicsDriverAPI size_t GetStartOffset () const
 Get start offset of the index buffer. More...
 
GraphicsDriverAPI void SetStartOffset (size_t offset)
 Set start offset of the index buffer. More...
 
GraphicsDriverAPI bool CopyFrom (IndexBufferHandle &srcBuffer)
 Copy data from another index buffer Note the source buffer format must match this buffer. More...
 
GraphicsDriverAPI bool CopyFrom (IndexBufferHandle &srcBuffer, size_t start, size_t numIndices, size_t destStart)
 Copy partial data from source buffer to specified location of this buffer Note both buffer should ensure they have enough space to copy the data. More...
 
GraphicsDriverAPI bool RealizeToSysMemory (bool keepHWBuffer=false)
 Copy data from hardware buffer to system buffer. More...
 
GraphicsDriverAPI bool RealizeToHWMemory (bool keepSysBuffer=false)
 Copy data from system buffer to hardware buffer. More...
 
- Public Member Functions inherited from SmartHandle
virtual GraphicsDriverAPI ~SmartHandle ()
 destructor More...
 
GraphicsDriverAPI bool IsValid () const
 Check if this handle is valid. More...
 
GraphicsDriverAPI void Release ()
 Release the underlying graphics objects. More...
 
GraphicsDriverAPI Identifier GetObjectID () const
 Get the underlying graphics object id. More...
 
GraphicsDriverAPI void SetPointer (IRefObject *pObject)
 
GraphicsDriverAPI IRefObjectGetPointer () const
 Get the underlying graphics object pointer. More...
 
bool operator== (const SmartHandle &rhs) const
 
bool operator!= (const SmartHandle &rhs) const
 
bool operator< (const SmartHandle &rhs) const
 
bool operator<= (const SmartHandle &rhs) const
 
bool operator> (const SmartHandle &rhs) const
 
bool operator>= (const SmartHandle &rhs) const
 
GraphicsDriverAPI SmartHandle (const SmartHandle &)
 
GraphicsDriverAPI SmartHandleoperator= (const SmartHandle &)
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Protected Member Functions inherited from SmartHandle
GraphicsDriverAPI SmartHandle ()
 
- Protected Attributes inherited from SmartHandle
IRefObjectmpObject
 

Detailed Description

IndexBufferHandle is a memory buffer that contain index data.

Index data, or indices, are integer offsets into vertex buffers and are used to render primitives.

Constructor & Destructor Documentation

◆ IndexBufferHandle() [1/2]

◆ IndexBufferHandle() [2/2]

◆ ~IndexBufferHandle()

virtual GraphicsDriverAPI ~IndexBufferHandle ( )
virtual

Member Function Documentation

◆ operator=()

◆ Initialize()

GraphicsDriverAPI bool Initialize ( IndexType  type,
size_t  numIndices,
void initialData = nullptr,
BufferUsageType  usage = BufferUsageStatic,
AccessType  access = ReadWriteAcess,
BufferPoolType  pool = BufferPoolTypeSystemBuffer 
)

Initialize a index buffer with initial data.

Parameters
typeThe type of the newly created buffer.
initialDatainitial data, can be nullptr
numIndicesnumber of indices in this buffer
usageusage of the buffer
accessaccess flag of the buffer
poolpool state of the buffer
Returns
true if successfully initialized, false otherwise.

◆ GetType()

GraphicsDriverAPI IndexType GetType ( ) const

Get the type of the index buffer.

Returns
The type of the index buffer as an IndexType

◆ GetNumberOfIndices()

GraphicsDriverAPI size_t GetNumberOfIndices ( ) const

Get the number of indices of this buffer.

Returns
The number of indices

◆ Lock()

GraphicsDriverAPI unsigned char* Lock ( size_t  offset,
size_t  numberOfIndices,
AccessType  accessType 
)

This function is used for reading/writing data from/into the index buffer.

Parameters
offsetthe start index that the lock operation starts
numberOfIndicesthe number of indices that this function will lock.
accessTypeindicate how to operate on the buffer.
Returns
the buffer for developers to read/write index data. The size of the buffer is numberOfIndices * indexStride.

◆ Unlock()

GraphicsDriverAPI void Unlock ( )

Unlock the buffer to update.

This function must be called after Lock. Once this function is called, the buffer that returned by Lock become invalid and should not be used any more.

◆ GetBufferUsageType()

GraphicsDriverAPI BufferUsageType GetBufferUsageType ( ) const

Gets the buffer usage type.

Returns
buffer usage type

◆ GetBufferPoolType()

GraphicsDriverAPI BufferPoolType GetBufferPoolType ( ) const

Gets the buffer pool type.

Returns
buffer pool type

◆ GetBufferAccessType()

GraphicsDriverAPI AccessType GetBufferAccessType ( ) const

Gets the buffer access type.

Returns
buffer access type

◆ Clone()

Clone the buffer.

Returns
the cloned buffer handle

◆ GetStartOffset()

GraphicsDriverAPI size_t GetStartOffset ( ) const

Get start offset of the index buffer.

Returns
The offset

◆ SetStartOffset()

GraphicsDriverAPI void SetStartOffset ( size_t  offset)

Set start offset of the index buffer.

This offset will be add to all indices.

Parameters
offsetof the index buffer

◆ CopyFrom() [1/2]

GraphicsDriverAPI bool CopyFrom ( IndexBufferHandle srcBuffer)

Copy data from another index buffer Note the source buffer format must match this buffer.

Parameters
srcBufferthe source buffer to copy to this buffer

◆ CopyFrom() [2/2]

GraphicsDriverAPI bool CopyFrom ( IndexBufferHandle srcBuffer,
size_t  start,
size_t  numIndices,
size_t  destStart 
)

Copy partial data from source buffer to specified location of this buffer Note both buffer should ensure they have enough space to copy the data.

Parameters
srcBufferthe source buffer
startoffset of the source buffer
numIndicesnumber of indices to copy
destStartstart offset of this buffer

◆ RealizeToSysMemory()

GraphicsDriverAPI bool RealizeToSysMemory ( bool  keepHWBuffer = false)

Copy data from hardware buffer to system buffer.

Parameters
keepHWBuffertrue to reserve hardware memory, false to release the memory.
Returns
true if the data copy is success. Otherwise false.

◆ RealizeToHWMemory()

GraphicsDriverAPI bool RealizeToHWMemory ( bool  keepSysBuffer = false)

Copy data from system buffer to hardware buffer.

Parameters
keepSysBuffertrue to reserve system memory, false to release the memory.
Returns
true if the data copy is success. Otherwise false.