Бранимир Караџић vor 6 Jahren
Ursprung
Commit
56cbbb0283
1 geänderte Dateien mit 29 neuen und 40 gelöschten Zeilen
  1. 29 40
      tools/geometryc/geometryc.cpp

+ 29 - 40
tools/geometryc/geometryc.cpp

@@ -3,19 +3,17 @@
  * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
  * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
  */
  */
 
 
-#include <stdio.h>
-
 #include <algorithm>
 #include <algorithm>
-#include <vector>
 
 
 #include <bx/string.h>
 #include <bx/string.h>
 #include <bgfx/bgfx.h>
 #include <bgfx/bgfx.h>
 #include "../../src/vertexdecl.h"
 #include "../../src/vertexdecl.h"
 
 
 #include <tinystl/allocator.h>
 #include <tinystl/allocator.h>
+#include <tinystl/string.h>
 #include <tinystl/unordered_map.h>
 #include <tinystl/unordered_map.h>
 #include <tinystl/unordered_set.h>
 #include <tinystl/unordered_set.h>
-#include <tinystl/string.h>
+#include <tinystl/vector.h>
 namespace stl = tinystl;
 namespace stl = tinystl;
 
 
 #include <meshoptimizer/src/meshoptimizer.h>
 #include <meshoptimizer/src/meshoptimizer.h>
@@ -26,7 +24,7 @@ namespace stl = tinystl;
 #if 0
 #if 0
 #	define BX_TRACE(_format, ...) \
 #	define BX_TRACE(_format, ...) \
 		do { \
 		do { \
-			printf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \
+			bx::printf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \
 		} while(0)
 		} while(0)
 
 
 #	define BX_WARN(_condition, _format, ...) \
 #	define BX_WARN(_condition, _format, ...) \
@@ -58,7 +56,7 @@ namespace stl = tinystl;
 
 
 #include "bounds.h"
 #include "bounds.h"
 
 
-typedef std::vector<bx::Vec3> Vec3Array;
+typedef stl::vector<bx::Vec3> Vec3Array;
 
 
 struct Index3
 struct Index3
 {
 {
@@ -76,7 +74,7 @@ struct TriIndices
 	uint64_t m_index[3];
 	uint64_t m_index[3];
 };
 };
 
 
-typedef std::vector<TriIndices> TriangleArray;
+typedef stl::vector<TriIndices> TriangleArray;
 
 
 struct Group
 struct Group
 {
 {
@@ -86,7 +84,7 @@ struct Group
 	stl::string m_material;
 	stl::string m_material;
 };
 };
 
 
-typedef std::vector<Group> GroupArray;
+typedef stl::vector<Group> GroupArray;
 
 
 struct Primitive
 struct Primitive
 {
 {
@@ -97,7 +95,7 @@ struct Primitive
 	stl::string m_name;
 	stl::string m_name;
 };
 };
 
 
-typedef std::vector<Primitive> PrimitiveArray;
+typedef stl::vector<Primitive> PrimitiveArray;
 
 
 static uint32_t s_obbSteps = 17;
 static uint32_t s_obbSteps = 17;
 
 
@@ -107,15 +105,6 @@ static uint32_t s_obbSteps = 17;
 #define BGFX_CHUNK_MAGIC_IBC BX_MAKEFOURCC('I', 'B', 'C', 0x1)
 #define BGFX_CHUNK_MAGIC_IBC BX_MAKEFOURCC('I', 'B', 'C', 0x1)
 #define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0)
 #define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0)
 
 
-long int fsize(FILE* _file)
-{
-	long int pos = ftell(_file);
-	fseek(_file, 0L, SEEK_END);
-	long int size = ftell(_file);
-	fseek(_file, pos, SEEK_SET);
-	return size;
-}
-
 void optimizeVertexCache(uint16_t* _indices, uint32_t _numIndices, uint32_t _numVertices)
 void optimizeVertexCache(uint16_t* _indices, uint32_t _numIndices, uint32_t _numVertices)
 {
 {
 	uint16_t* newIndexList = new uint16_t[_numIndices];
 	uint16_t* newIndexList = new uint16_t[_numIndices];
@@ -139,11 +128,11 @@ void writeCompressedIndices(bx::WriterI* _writer, const uint16_t* _indices, uint
 	size_t maxSize = meshopt_encodeIndexBufferBound(_numIndices, _numVertices);
 	size_t maxSize = meshopt_encodeIndexBufferBound(_numIndices, _numVertices);
 	unsigned char* compressedIndices = (unsigned char*)malloc(maxSize);
 	unsigned char* compressedIndices = (unsigned char*)malloc(maxSize);
 	size_t compressedSize = meshopt_encodeIndexBuffer(compressedIndices, maxSize, _indices, _numIndices);
 	size_t compressedSize = meshopt_encodeIndexBuffer(compressedIndices, maxSize, _indices, _numIndices);
-	printf( "indices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n"
+	bx::printf( "indices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n"
 		, _numIndices*2
 		, _numIndices*2
 		, (uint32_t)compressedSize
 		, (uint32_t)compressedSize
 		, 100.0f - float(compressedSize ) / float(_numIndices*2)*100.0f
 		, 100.0f - float(compressedSize ) / float(_numIndices*2)*100.0f
-	);
+		);
 
 
 	bx::write(_writer, (uint32_t)compressedSize);
 	bx::write(_writer, (uint32_t)compressedSize);
 	bx::write(_writer, compressedIndices, (uint32_t)compressedSize );
 	bx::write(_writer, compressedIndices, (uint32_t)compressedSize );
@@ -155,11 +144,11 @@ void writeCompressedVertices(bx::WriterI* _writer,  const uint8_t* _vertices, ui
 	size_t maxSize = meshopt_encodeVertexBufferBound(_numVertices, _stride);
 	size_t maxSize = meshopt_encodeVertexBufferBound(_numVertices, _stride);
 	unsigned char* compressedVertices = (unsigned char*)malloc(maxSize);
 	unsigned char* compressedVertices = (unsigned char*)malloc(maxSize);
 	size_t compressedSize = meshopt_encodeVertexBuffer(compressedVertices, maxSize, _vertices, _numVertices, _stride);
 	size_t compressedSize = meshopt_encodeVertexBuffer(compressedVertices, maxSize, _vertices, _numVertices, _stride);
-	printf("vertices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n"
+	bx::printf("vertices uncompressed: %10d, compressed: %10d, ratio: %0.2f%%\n"
 		, _numVertices * _stride
 		, _numVertices * _stride
 		, (uint32_t)compressedSize
 		, (uint32_t)compressedSize
 		, 100.0f - float(compressedSize) / float(_numVertices * _stride)*100.0f
 		, 100.0f - float(compressedSize) / float(_numVertices * _stride)*100.0f
-	);
+		);
 
 
 	bx::write(_writer, (uint32_t)compressedSize);
 	bx::write(_writer, (uint32_t)compressedSize);
 	bx::write(_writer, compressedVertices, (uint32_t)compressedSize );
 	bx::write(_writer, compressedVertices, (uint32_t)compressedSize );
@@ -379,11 +368,11 @@ void help(const char* _error = NULL)
 {
 {
 	if (NULL != _error)
 	if (NULL != _error)
 	{
 	{
-		fprintf(stderr, "Error:\n%s\n\n", _error);
+		bx::printf("Error:\n%s\n\n", _error);
 	}
 	}
 
 
-	fprintf(stderr
-		, "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n"
+	bx::printf(
+		  "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n"
 		  "Copyright 2011-2019 Branimir Karadzic. All rights reserved.\n"
 		  "Copyright 2011-2019 Branimir Karadzic. All rights reserved.\n"
 		  "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n\n"
 		  "License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause\n\n"
 		, BGFX_GEOMETRYC_VERSION_MAJOR
 		, BGFX_GEOMETRYC_VERSION_MAJOR
@@ -391,8 +380,8 @@ void help(const char* _error = NULL)
 		, BGFX_API_VERSION
 		, BGFX_API_VERSION
 		);
 		);
 
 
-	fprintf(stderr
-		, "Usage: geometryc -f <in> -o <out>\n"
+	bx::printf(
+		  "Usage: geometryc -f <in> -o <out>\n"
 
 
 		  "\n"
 		  "\n"
 		  "Supported input file types:\n"
 		  "Supported input file types:\n"
@@ -431,8 +420,8 @@ int main(int _argc, const char* _argv[])
 
 
 	if (cmdLine.hasArg('v', "version") )
 	if (cmdLine.hasArg('v', "version") )
 	{
 	{
-		fprintf(stderr
-			, "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n"
+		bx::printf(
+			  "geometryc, bgfx geometry compiler tool, version %d.%d.%d.\n"
 			, BGFX_GEOMETRYC_VERSION_MAJOR
 			, BGFX_GEOMETRYC_VERSION_MAJOR
 			, BGFX_GEOMETRYC_VERSION_MINOR
 			, BGFX_GEOMETRYC_VERSION_MINOR
 			, BGFX_API_VERSION
 			, BGFX_API_VERSION
@@ -486,21 +475,21 @@ int main(int _argc, const char* _argv[])
 	bool hasTangent = cmdLine.hasArg("tangent");
 	bool hasTangent = cmdLine.hasArg("tangent");
 	bool hasBc = cmdLine.hasArg("barycentric");
 	bool hasBc = cmdLine.hasArg("barycentric");
 
 
-	FILE* file = fopen(filePath, "r");
-	if (NULL == file)
+	bx::FileReader fr;
+	if (!bx::open(&fr, filePath) )
 	{
 	{
-		printf("Unable to open input file '%s'.", filePath);
+		bx::printf("Unable to open input file '%s'.", filePath);
 		exit(bx::kExitFailure);
 		exit(bx::kExitFailure);
 	}
 	}
 
 
 	int64_t parseElapsed = -bx::getHPCounter();
 	int64_t parseElapsed = -bx::getHPCounter();
 	int64_t triReorderElapsed = 0;
 	int64_t triReorderElapsed = 0;
 
 
-	uint32_t size = (uint32_t)fsize(file);
+	uint32_t size = (uint32_t)bx::getSize(&fr);
 	char* data = new char[size+1];
 	char* data = new char[size+1];
-	size = (uint32_t)fread(data, 1, size, file);
+	size = bx::read(&fr, data, size);
 	data[size] = '\0';
 	data[size] = '\0';
-	fclose(file);
+	bx::close(&fr);
 
 
 	// Reference(s):
 	// Reference(s):
 	// - Wavefront .obj file
 	// - Wavefront .obj file
@@ -621,7 +610,7 @@ int main(int _argc, const char* _argv[])
 						{
 						{
 							if (ccw)
 							if (ccw)
 							{
 							{
-								std::swap(triangle.m_index[1], triangle.m_index[2]);
+								bx::swap(triangle.m_index[1], triangle.m_index[2]);
 							}
 							}
 							triangles.push_back(triangle);
 							triangles.push_back(triangle);
 						}
 						}
@@ -673,7 +662,7 @@ int main(int _argc, const char* _argv[])
 					if (once)
 					if (once)
 					{
 					{
 						once = false;
 						once = false;
-						printf("warning: 'parameter space vertices' are unsupported.\n");
+						bx::printf("warning: 'parameter space vertices' are unsupported.\n");
 					}
 					}
 				}
 				}
 				else if (0 == bx::strCmp(argv[0], "vt") )
 				else if (0 == bx::strCmp(argv[0], "vt") )
@@ -894,7 +883,7 @@ int main(int _argc, const char* _argv[])
 	bx::FileWriter writer;
 	bx::FileWriter writer;
 	if (!bx::open(&writer, outFilePath) )
 	if (!bx::open(&writer, outFilePath) )
 	{
 	{
-		printf("Unable to open output file '%s'.", outFilePath);
+		bx::printf("Unable to open output file '%s'.", outFilePath);
 		exit(bx::kExitFailure);
 		exit(bx::kExitFailure);
 	}
 	}
 
 
@@ -1053,7 +1042,7 @@ int main(int _argc, const char* _argv[])
 
 
 	BX_CHECK(0 == primitives.size(), "Not all primitives are written");
 	BX_CHECK(0 == primitives.size(), "Not all primitives are written");
 
 
-	printf("size: %d\n", uint32_t(bx::seek(&writer) ) );
+	bx::printf("size: %d\n", uint32_t(bx::seek(&writer) ) );
 	bx::close(&writer);
 	bx::close(&writer);
 
 
 	delete [] indexData;
 	delete [] indexData;
@@ -1062,7 +1051,7 @@ int main(int _argc, const char* _argv[])
 	now = bx::getHPCounter();
 	now = bx::getHPCounter();
 	convertElapsed += now;
 	convertElapsed += now;
 
 
-	printf("parse %f [s]\ntri reorder %f [s]\nconvert %f [s]\n# %d, g %d, p %d, v %d, i %d\n"
+	bx::printf("parse %f [s]\ntri reorder %f [s]\nconvert %f [s]\n# %d, g %d, p %d, v %d, i %d\n"
 		, double(parseElapsed)/bx::getHPFrequency()
 		, double(parseElapsed)/bx::getHPFrequency()
 		, double(triReorderElapsed)/bx::getHPFrequency()
 		, double(triReorderElapsed)/bx::getHPFrequency()
 		, double(convertElapsed)/bx::getHPFrequency()
 		, double(convertElapsed)/bx::getHPFrequency()