Lines Matching refs:mesh
804 static bool WriteInterleaved(FILE * const pFile, SPODMesh &mesh) in WriteInterleaved() argument
806 if(!mesh.pInterleaved) in WriteInterleaved()
811 CPODData **pCPODData = new CPODData*[7 + mesh.nNumUVW]; in WriteInterleaved()
813 if(mesh.sVertex.n) pCPODData[ui32CPODDataSize++] = &mesh.sVertex; in WriteInterleaved()
814 if(mesh.sNormals.n) pCPODData[ui32CPODDataSize++] = &mesh.sNormals; in WriteInterleaved()
815 if(mesh.sTangents.n) pCPODData[ui32CPODDataSize++] = &mesh.sTangents; in WriteInterleaved()
816 if(mesh.sBinormals.n) pCPODData[ui32CPODDataSize++] = &mesh.sBinormals; in WriteInterleaved()
817 if(mesh.sVtxColours.n) pCPODData[ui32CPODDataSize++] = &mesh.sVtxColours; in WriteInterleaved()
818 if(mesh.sBoneIdx.n) pCPODData[ui32CPODDataSize++] = &mesh.sBoneIdx; in WriteInterleaved()
819 if(mesh.sBoneWeight.n) pCPODData[ui32CPODDataSize++] = &mesh.sBoneWeight; in WriteInterleaved()
821 for(i = 0; i < mesh.nNumUVW; ++i) in WriteInterleaved()
822 if(mesh.psUVW[i].n) pCPODData[ui32CPODDataSize++] = &mesh.psUVW[i]; in WriteInterleaved()
845 …if(!WriteMarker(pFile, ePODFileMeshInterleaved, false, mesh.nNumVertex * mesh.sVertex.nStride)) re… in WriteInterleaved()
847 for(i = 0; i < mesh.nNumVertex; ++i) in WriteInterleaved()
849 unsigned char* pVtxStart = mesh.pInterleaved + (i * mesh.sVertex.nStride); in WriteInterleaved()
3166 EPVRTError PVRTModelPODScaleAndConvertVtxData(SPODMesh &mesh, const EPVRTDataType eNewType) argument
3169 PVRTMatrixIdentity(mesh.mUnpackMatrix);
3172 if(!mesh.nNumVertex)
3176 if(mesh.sVertex.eType != EPODDataFloat && mesh.pInterleaved != 0)
3192 …PVRTBoundingBoxComputeInterleaved(&BoundingBox, mesh.sVertex.pData, mesh.nNumVertex, 0, mesh.sVe…
3257 PVRTMatrixMultiply(mesh.mUnpackMatrix, mOffset, mScale);
3260 PVRTMatrixMultiply(mesh.mUnpackMatrix, mesh.mUnpackMatrix, mOffset);
3263 for(unsigned int i = 0; i < mesh.nNumVertex; ++i)
3265 …PVRTVertexRead(&v, mesh.sVertex.pData + i * mesh.sVertex.nStride, mesh.sVertex.eType, mesh.sVe…
3277 PVRTTransform(&res, &o, &mesh.mUnpackMatrix);
3285 …ertexWrite(mesh.sVertex.pData + i * mesh.sVertex.nStride, mesh.sVertex.eType, (int) (mesh.sVertex.…
3289 PVRTModelPODDataConvert(mesh.sVertex, mesh.nNumVertex, eNewType);
3367 void PVRTModelPODReorderFaces(SPODMesh &mesh, const int i32El1, const int i32El2, const int i32El3) argument
3369 if(!mesh.sFaces.pData)
3374 for(unsigned int i = 0; i < mesh.nNumFaces * 3; i += 3)
3376 unsigned char *pData = mesh.sFaces.pData + i * mesh.sFaces.nStride;
3379 PVRTVertexRead(&ui32V[0], pData, mesh.sFaces.eType);
3380 PVRTVertexRead(&ui32V[1], pData + mesh.sFaces.nStride, mesh.sFaces.eType);
3381 PVRTVertexRead(&ui32V[2], pData + 2 * mesh.sFaces.nStride, mesh.sFaces.eType);
3384 PVRTVertexWrite(pData, mesh.sFaces.eType, ui32V[i32El1]);
3385 PVRTVertexWrite(pData + mesh.sFaces.nStride, mesh.sFaces.eType, ui32V[i32El2]);
3386 PVRTVertexWrite(pData + 2 * mesh.sFaces.nStride, mesh.sFaces.eType, ui32V[i32El3]);
3455 void PVRTModelPODToggleInterleaved(SPODMesh &mesh, const PVRTuint32 ui32AlignToNBytes) argument
3459 if(!mesh.nNumVertex)
3462 if(mesh.pInterleaved)
3467 DeinterleaveArray(mesh.sVertex, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3468 DeinterleaveArray(mesh.sNormals, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3469 DeinterleaveArray(mesh.sTangents, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3470 DeinterleaveArray(mesh.sBinormals, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3472 for(i = 0; i < mesh.nNumUVW; ++i)
3473 DeinterleaveArray(mesh.psUVW[i], mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3475 DeinterleaveArray(mesh.sVtxColours, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3476 DeinterleaveArray(mesh.sBoneIdx, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3477 DeinterleaveArray(mesh.sBoneWeight, mesh.pInterleaved, mesh.nNumVertex, ui32AlignToNBytes);
3478 FREE(mesh.pInterleaved);
3493 _ASSERT(mesh.nNumUVW < 8);
3495 nStride = nVertexStride = PVRTModelPODDataStride(mesh.sVertex);
3498 nStride += nNormalStride = PVRTModelPODDataStride(mesh.sNormals);
3501 nStride += nTangentStride = PVRTModelPODDataStride(mesh.sTangents);
3504 nStride += nBinormalStride = PVRTModelPODDataStride(mesh.sBinormals);
3507 for(i = 0; i < mesh.nNumUVW; ++i)
3509 nStride += nUVWStride[i] = PVRTModelPODDataStride(mesh.psUVW[i]);
3513 nStride += nVtxColourStride = PVRTModelPODDataStride(mesh.sVtxColours);
3516 nStride += nBoneIdxStride = PVRTModelPODDataStride(mesh.sBoneIdx);
3519 nStride += nBoneWeightStride = PVRTModelPODDataStride(mesh.sBoneWeight);
3524 SafeAlloc(mesh.pInterleaved, mesh.nNumVertex * nStride);
3531 if(PVRTModelPODDataTypeSize(mesh.sVertex.eType) == nBytes)
3532 …InterleaveArray((char*)mesh.pInterleaved, mesh.sVertex, mesh.nNumVertex, nStride, nVertexPadding, …
3534 if(PVRTModelPODDataTypeSize(mesh.sNormals.eType) == nBytes)
3535 …InterleaveArray((char*)mesh.pInterleaved, mesh.sNormals, mesh.nNumVertex, nStride, nNormalPadding,…
3537 if(PVRTModelPODDataTypeSize(mesh.sTangents.eType) == nBytes)
3538 …InterleaveArray((char*)mesh.pInterleaved, mesh.sTangents, mesh.nNumVertex, nStride, nTangentPaddin…
3540 if(PVRTModelPODDataTypeSize(mesh.sBinormals.eType) == nBytes)
3541 …InterleaveArray((char*)mesh.pInterleaved, mesh.sBinormals, mesh.nNumVertex, nStride, nBinormalPadd…
3543 if(PVRTModelPODDataTypeSize(mesh.sVtxColours.eType) == nBytes)
3544 …InterleaveArray((char*)mesh.pInterleaved, mesh.sVtxColours, mesh.nNumVertex, nStride, nVtxColourPa…
3546 for(i = 0; i < mesh.nNumUVW; ++i)
3548 if(PVRTModelPODDataTypeSize(mesh.psUVW[i].eType) == nBytes)
3549 …InterleaveArray((char*)mesh.pInterleaved, mesh.psUVW[i], mesh.nNumVertex, nStride, nUVWPadding[i],…
3552 if(PVRTModelPODDataTypeSize(mesh.sBoneIdx.eType) == nBytes)
3553 …InterleaveArray((char*)mesh.pInterleaved, mesh.sBoneIdx, mesh.nNumVertex, nStride, nBoneIdxPadding…
3555 if(PVRTModelPODDataTypeSize(mesh.sBoneWeight.eType) == nBytes)
3556 …InterleaveArray((char*)mesh.pInterleaved, mesh.sBoneWeight, mesh.nNumVertex, nStride, nBoneWeightP…
3567 void PVRTModelPODDeIndex(SPODMesh &mesh) argument
3571 if(!mesh.pInterleaved || !mesh.nNumVertex)
3574 _ASSERT(mesh.nNumVertex && mesh.nNumFaces);
3577 mesh.nNumVertex = PVRTModelPODCountIndices(mesh);
3578 SafeAlloc(pNew, mesh.sVertex.nStride * mesh.nNumVertex);
3581 if(mesh.sFaces.eType == EPODDataUnsignedShort)
3583 for(unsigned int i = 0; i < mesh.nNumVertex; ++i)
3584 …memcpy(pNew + i * mesh.sVertex.nStride, (char*)mesh.pInterleaved + ((unsigned short*)mesh.sFaces.p…
3588 _ASSERT(mesh.sFaces.eType == EPODDataUnsignedInt);
3590 for(unsigned int i = 0; i < mesh.nNumVertex; ++i)
3591 …memcpy(pNew + i * mesh.sVertex.nStride, (char*)mesh.pInterleaved + ((unsigned int*)mesh.sFaces.pDa…
3595 FREE(mesh.pInterleaved);
3596 mesh.pInterleaved = pNew;
3599 FREE(mesh.sFaces.pData);
3600 mesh.sFaces.n = 0;
3601 mesh.sFaces.nStride = 0;
3609 void PVRTModelPODToggleStrips(SPODMesh &mesh) argument
3614 if(!mesh.nNumFaces)
3617 _ASSERT(mesh.sFaces.n == 1);
3618 nIdxSize = PVRTModelPODDataTypeSize(mesh.sFaces.eType);
3619 nTriStride = PVRTModelPODDataStride(mesh.sFaces) * 3;
3621 old = mesh.sFaces;
3622 mesh.sFaces.pData = 0;
3623 SafeAlloc(mesh.sFaces.pData, nTriStride * mesh.nNumFaces);
3625 if(mesh.nNumStrips)
3633 for(unsigned int i = 0; i < mesh.nNumStrips; ++i)
3635 for(unsigned int j = 0; j < mesh.pnStripLength[i]; ++j)
3642 (char*)mesh.sFaces.pData + nIdxSize * nListIdxCnt,
3648 (char*)mesh.sFaces.pData + nIdxSize * nListIdxCnt,
3654 (char*)mesh.sFaces.pData + nIdxSize * nListIdxCnt,
3664 (char*)mesh.sFaces.pData + nIdxSize * nListIdxCnt,
3674 _ASSERT(nListIdxCnt == mesh.nNumFaces*3);
3675 FREE(mesh.pnStripLength);
3676 mesh.nNumStrips = 0;
3687 mesh.pnStripLength = (unsigned int*)calloc(mesh.nNumFaces, sizeof(*mesh.pnStripLength));
3688 mesh.nNumStrips = 0;
3690 nBatchCnt = mesh.sBoneBatches.nBatchCnt ? mesh.sBoneBatches.nBatchCnt : 1;
3698 if(!mesh.sBoneBatches.nBatchCnt)
3700 nFaces = mesh.nNumFaces;
3705 if(h + 1 < mesh.sBoneBatches.nBatchCnt)
3706 nFaces = mesh.sBoneBatches.pnBatchOffset[h+1] - mesh.sBoneBatches.pnBatchOffset[h];
3708 nFaces = mesh.nNumFaces - mesh.sBoneBatches.pnBatchOffset[h];
3710 pFaces = &old.pData[3 * mesh.sBoneBatches.pnBatchOffset[h] * old.nStride];
3723 if(mesh.pnStripLength[mesh.nNumStrips])
3725 if(mesh.pnStripLength[mesh.nNumStrips] & 0x01)
3729 … PVRTVertexWrite((char*)mesh.sFaces.pData + nIdxCnt * mesh.sFaces.nStride, mesh.sFaces.eType, n2);
3731 mesh.pnStripLength[mesh.nNumStrips] += 1;
3739 … PVRTVertexWrite((char*)mesh.sFaces.pData + nIdxCnt * mesh.sFaces.nStride, mesh.sFaces.eType, n2);
3741 mesh.pnStripLength[mesh.nNumStrips] += 1;
3746 ++mesh.nNumStrips;
3750 … PVRTVertexWrite((char*)mesh.sFaces.pData + nIdxCnt * mesh.sFaces.nStride, mesh.sFaces.eType, n0);
3752 … PVRTVertexWrite((char*)mesh.sFaces.pData + nIdxCnt * mesh.sFaces.nStride, mesh.sFaces.eType, n1);
3754 … PVRTVertexWrite((char*)mesh.sFaces.pData + nIdxCnt * mesh.sFaces.nStride, mesh.sFaces.eType, n2);
3757 mesh.pnStripLength[mesh.nNumStrips] += 1;
3761 if(mesh.pnStripLength[mesh.nNumStrips])
3762 ++mesh.nNumStrips;
3764 SafeRealloc(mesh.sFaces.pData, nIdxCnt * nIdxSize);
3765 …mesh.pnStripLength = (unsigned int*)realloc(mesh.pnStripLength, sizeof(*mesh.pnStripLength) * mesh…
3777 unsigned int PVRTModelPODCountIndices(const SPODMesh &mesh) argument
3779 return mesh.nNumStrips ? mesh.nNumFaces + (mesh.nNumStrips * 2) : mesh.nNumFaces * 3;