| /*!**************************************************************************** | |
| @file PVRTBoneBatch.h | |
| @copyright Copyright (c) Imagination Technologies Limited. | |
| @brief Utility functions which process vertices. | |
| ******************************************************************************/ | |
| #ifndef _PVRTBONEBATCH_H_ | |
| #define _PVRTBONEBATCH_H_ | |
| #include "PVRTVertex.h" | |
| #include <stdlib.h> | |
| /*!*************************************************************************** | |
| Handles a batch of bones | |
| *****************************************************************************/ | |
| /*!*************************************************************************** | |
| @class CPVRTBoneBatches | |
| @brief A class for processing vertices into bone batches | |
| *****************************************************************************/ | |
| class CPVRTBoneBatches | |
| { | |
| public: | |
| int *pnBatches; /*!< Space for nBatchBoneMax bone indices, per batch */ | |
| int *pnBatchBoneCnt; /*!< Actual number of bone indices, per batch */ | |
| int *pnBatchOffset; /*!< Offset into triangle array, per batch */ | |
| int nBatchBoneMax; /*!< Stored value as was passed into Create() */ | |
| int nBatchCnt; /*!< Number of batches to render */ | |
| /*!*********************************************************************** | |
| @brief Fills the bone batch structure | |
| @param[out] pnVtxNumOut vertex count | |
| @param[out] pVtxOut Output vertices (program must free() this) | |
| @param[in,out] pui32Idx index array for triangle list | |
| @param[in] nVtxNum vertex count | |
| @param[in] pVtx vertices | |
| @param[in] nStride Size of a vertex (in bytes) | |
| @param[in] nOffsetWeight Offset in bytes to the vertex bone-weights | |
| @param[in] eTypeWeight Data type of the vertex bone-weights | |
| @param[in] nOffsetIdx Offset in bytes to the vertex bone-indices | |
| @param[in] eTypeIdx Data type of the vertex bone-indices | |
| @param[in] nTriNum Number of triangles | |
| @param[in] nBatchBoneMax Number of bones a batch can reference | |
| @param[in] nVertexBones Number of bones affecting each vertex | |
| @return PVR_SUCCESS if successful | |
| *************************************************************************/ | |
| EPVRTError Create( | |
| int * const pnVtxNumOut, | |
| char ** const pVtxOut, | |
| unsigned int * const pui32Idx, | |
| const int nVtxNum, | |
| const char * const pVtx, | |
| const int nStride, | |
| const int nOffsetWeight, | |
| const EPVRTDataType eTypeWeight, | |
| const int nOffsetIdx, | |
| const EPVRTDataType eTypeIdx, | |
| const int nTriNum, | |
| const int nBatchBoneMax, | |
| const int nVertexBones); | |
| /*!*********************************************************************** | |
| @brief Destroy the bone batch structure | |
| *************************************************************************/ | |
| void Release() | |
| { | |
| FREE(pnBatches); | |
| FREE(pnBatchBoneCnt); | |
| FREE(pnBatchOffset); | |
| nBatchCnt = 0; | |
| } | |
| }; | |
| #endif /* _PVRTBONEBATCH_H_ */ | |
| /***************************************************************************** | |
| End of file (PVRTBoneBatch.h) | |
| *****************************************************************************/ | |