Home | History | Annotate | Download | only in Tools
      1 /*!****************************************************************************
      2 
      3  @file         PVRTBoneBatch.h
      4  @copyright    Copyright (c) Imagination Technologies Limited.
      5  @brief        Utility functions which process vertices.
      6 
      7 ******************************************************************************/
      8 #ifndef _PVRTBONEBATCH_H_
      9 #define _PVRTBONEBATCH_H_
     10 
     11 #include "PVRTVertex.h"
     12 #include <stdlib.h>
     13 
     14 /*!***************************************************************************
     15  Handles a batch of bones
     16 *****************************************************************************/
     17 /*!***************************************************************************
     18  @class CPVRTBoneBatches
     19  @brief A class for processing vertices into bone batches
     20 *****************************************************************************/
     21 class CPVRTBoneBatches
     22 {
     23 public:
     24 	int	*pnBatches;			/*!< Space for nBatchBoneMax bone indices, per batch */
     25 	int	*pnBatchBoneCnt;	/*!< Actual number of bone indices, per batch */
     26 	int	*pnBatchOffset;		/*!< Offset into triangle array, per batch */
     27 	int nBatchBoneMax;		/*!< Stored value as was passed into Create() */
     28 	int	nBatchCnt;			/*!< Number of batches to render */
     29 
     30 	/*!***********************************************************************
     31 	 @brief      	Fills the bone batch structure
     32 	 @param[out]	pnVtxNumOut		vertex count
     33 	 @param[out]	pVtxOut			Output vertices (program must free() this)
     34 	 @param[in,out]	pui32Idx		index array for triangle list
     35 	 @param[in]		nVtxNum			vertex count
     36 	 @param[in]		pVtx			vertices
     37 	 @param[in]		nStride			Size of a vertex (in bytes)
     38 	 @param[in]		nOffsetWeight	Offset in bytes to the vertex bone-weights
     39 	 @param[in]		eTypeWeight		Data type of the vertex bone-weights
     40 	 @param[in]		nOffsetIdx		Offset in bytes to the vertex bone-indices
     41 	 @param[in]		eTypeIdx		Data type of the vertex bone-indices
     42 	 @param[in]		nTriNum			Number of triangles
     43 	 @param[in]		nBatchBoneMax	Number of bones a batch can reference
     44 	 @param[in]		nVertexBones	Number of bones affecting each vertex
     45 	 @return		PVR_SUCCESS if successful
     46 	*************************************************************************/
     47 	EPVRTError Create(
     48 		int					* const pnVtxNumOut,
     49 		char				** const pVtxOut,
     50 		unsigned int		* const pui32Idx,
     51 		const int			nVtxNum,
     52 		const char			* const pVtx,
     53 		const int			nStride,
     54 		const int			nOffsetWeight,
     55 		const EPVRTDataType	eTypeWeight,
     56 		const int			nOffsetIdx,
     57 		const EPVRTDataType	eTypeIdx,
     58 		const int			nTriNum,
     59 		const int			nBatchBoneMax,
     60 		const int			nVertexBones);
     61 
     62 	/*!***********************************************************************
     63 	 @brief      	Destroy the bone batch structure
     64 	*************************************************************************/
     65 	void Release()
     66 	{
     67 		FREE(pnBatches);
     68 		FREE(pnBatchBoneCnt);
     69 		FREE(pnBatchOffset);
     70 		nBatchCnt = 0;
     71 	}
     72 };
     73 
     74 
     75 #endif /* _PVRTBONEBATCH_H_ */
     76 
     77 /*****************************************************************************
     78  End of file (PVRTBoneBatch.h)
     79 *****************************************************************************/
     80 
     81