本文整理汇总了C++中CGrowableArray::size方法的典型用法代码示例。如果您正苦于以下问题:C++ CGrowableArray::size方法的具体用法?C++ CGrowableArray::size怎么用?C++ CGrowableArray::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGrowableArray
的用法示例。
在下文中一共展示了CGrowableArray::size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Create
/*!***************************************************************************
@Function Create
@Output pnVtxNumOut vertex count
@Output pVtxOut Output vertices (program must free() this)
@Modified pui32Idx index array for triangle list
@Input nVtxNum vertex count
@Input pVtx vertices
@Input nStride Size of a vertex (in bytes)
@Input nOffsetWeight Offset in bytes to the vertex bone-weights
@Input eTypeWeight Data type of the vertex bone-weights
@Input nOffsetIdx Offset in bytes to the vertex bone-indices
@Input eTypeIdx Data type of the vertex bone-indices
@Input nTriNum Number of triangles
@Input nBatchBoneMax Number of bones a batch can reference
@Input nVertexBones Number of bones affecting each vertex
@Returns PVR_SUCCESS if successful
@Description Fills the bone batch structure
*****************************************************************************/
EPVRTError CPVRTBoneBatches::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)
{
int i, j, k, nTriCnt;
CBatch batch;
std::list<CBatch> lBatch;
std::list<CBatch>::iterator iBatch, iBatch2;
CBatch **ppBatch;
unsigned int *pui32IdxNew;
const char *pV, *pV2;
PVRTVECTOR4 vWeight, vIdx;
PVRTVECTOR4 vWeight2, vIdx2;
std::vector<int> *pvDup;
CGrowableArray *pVtxBuf;
unsigned int ui32SrcIdx;
memset(this, 0, sizeof(*this));
if(nVertexBones <= 0 || nVertexBones > 4)
{
_RPT0(_CRT_WARN, "CPVRTBoneBatching() will only handle 1..4 bones per vertex.\n");
return PVR_FAIL;
}
memset(&vWeight, 0, sizeof(vWeight));
memset(&vWeight2, 0, sizeof(vWeight2));
memset(&vIdx, 0, sizeof(vIdx));
memset(&vIdx2, 0, sizeof(vIdx2));
batch.SetSize(nBatchBoneMax);
// Allocate some working space
ppBatch = (CBatch**)malloc(nTriNum * sizeof(*ppBatch));
pui32IdxNew = (unsigned int*)malloc(nTriNum * 3 * sizeof(*pui32IdxNew));
pvDup = new std::vector<int>[nVtxNum];
pVtxBuf = new CGrowableArray(nStride);
// Check what batches are necessary
for(i = 0; i < nTriNum; ++i)
{
// Build the batch
if(!FillBatch(batch, &pui32Idx[i * 3], pVtx, nStride, nOffsetWeight, eTypeWeight, nOffsetIdx, eTypeIdx, nVertexBones))
{
free(pui32IdxNew);
return PVR_FAIL;
}
// Update the batch list
for(iBatch = lBatch.begin(); iBatch != lBatch.end(); ++iBatch)
{
// Do nothing if an existing batch is a superset of this new batch
if(iBatch->Contains(batch))
{
break;
}
// If this new batch is a superset of an existing batch, replace the old with the new
if(batch.Contains(*iBatch))
{
*iBatch = batch;
break;
}
}
// If no suitable batch exists, create a new one
if(iBatch == lBatch.end())
{
lBatch.push_back(batch);
}
}
//.........这里部分代码省略.........