/*!*************************************************************************** @Function PVRTTriStrip @Output ppui32Strips @Output ppnStripLen @Output pnStripCnt @Input pui32TriList @Input nTriCnt @Description Reads a triangle list and generates an optimised triangle strip. *****************************************************************************/ void PVRTTriStrip( unsigned int **ppui32Strips, unsigned int **ppnStripLen, unsigned int *pnStripCnt, const unsigned int * const pui32TriList, const unsigned int nTriCnt) { unsigned int *pui32Strips; unsigned int *pnStripLen; unsigned int nStripCnt; /* If the order in which triangles are tested as strip roots is randomised, then several attempts can be made. Use the best result. */ for(int i = 0; i < #ifdef RND_TRIS_ORDER 5 #else 1 #endif ; ++i) { CStrip stripper(pui32TriList, nTriCnt); #ifdef RND_TRIS_ORDER srand(i); #endif stripper.StripFromEdges(); stripper.StripImprove(); stripper.Output(&pui32Strips, &pnStripLen, &nStripCnt); if(!i || nStripCnt < *pnStripCnt) { if(i) { FREE(*ppui32Strips); FREE(*ppnStripLen); } *ppui32Strips = pui32Strips; *ppnStripLen = pnStripLen; *pnStripCnt = nStripCnt; } else { FREE(pui32Strips); FREE(pnStripLen); } } }
int zeroWrite(int size, int lba, char* value) { int rc = 0; rc = stripper(size, lba, value, 1); return rc; }
int zeroRead(int size, int lba) { int rc = 0; rc = stripper(size, lba, NULL, 0); return rc; }