MCPcopy Create free account
hub / github.com/cutdigital/mcut / writeOFF

Function writeOFF

tutorials/EventCallback/EventCallback.cpp:343–382  ·  view source on GitHub ↗

write mesh to .off file

Source from the content-addressed store, hash-verified

341
342// write mesh to .off file
343McVoid writeOFF(
344 const char* fpath,
345 McFloat* pVertices,
346 McUint32* pFaceIndices,
347 McUint32* pFaceSizes,
348 McUint32 numVertices,
349 McUint32 numFaces)
350{
351 fprintf(stdout, "write: %s\n", fpath);
352
353 FILE* file = fopen(fpath, "w");
354
355 if (file == NULL) {
356 fprintf(stderr, "error: failed to open `%s`", fpath);
357 exit(1);
358 }
359
360 fprintf(file, "OFF\n");
361 fprintf(file, "%d %d %d\n", numVertices, numFaces, 0 /*numEdges*/);
362 McInt32 i;
363 for (i = 0; i < (McInt32)numVertices; ++i) {
364 McFloat* vptr = pVertices + (i * 3);
365 fprintf(file, "%f %f %f\n", vptr[0], vptr[1], vptr[2]);
366 }
367
368 McInt32 faceBaseOffset = 0;
369 for (i = 0; i < (McInt32)numFaces; ++i) {
370 McUint32 faceVertexCount = pFaceSizes[i];
371 fprintf(file, "%d", (McInt32)faceVertexCount);
372 McInt32 j;
373 for (j = 0; j < (McInt32)faceVertexCount; ++j) {
374 McUint32* fptr = pFaceIndices + faceBaseOffset + j;
375 fprintf(file, " %d", *fptr);
376 }
377 fprintf(file, "\n");
378 faceBaseOffset += faceVertexCount;
379 }
380
381 fclose(file);
382}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected