| /*!**************************************************************************** |
| |
| @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) |
| *****************************************************************************/ |
| |