Пример #1
0
unsigned int WavefrontObj::loadObj(const char *fname, bool textured) // load a wavefront obj returns number of triangles that were loaded.  Data is persists until the class is destructed.
{
	unsigned int ret = 0;
	delete []mVertices;
	mVertices = 0;
	delete []mIndices;
	mIndices = 0;
	mVertexCount = 0;
	mTriCount = 0;

	BuildMesh bm;
	OBJ obj;
	obj.LoadMesh(fname, &bm, textured);

	if (bm.GetNumVertices())
	{
		mVertexCount = bm.GetNumVertices()/3;
		mVertices = new float[mVertexCount*3];
		memcpy(mVertices, bm.GetVertices(), sizeof(float)*mVertexCount*3);

		if (textured)
		{
			mTexCoords = new float[mVertexCount * 2];
			memcpy(mTexCoords, bm.GetTexCoords(), sizeof(float) * mVertexCount * 2);
		}

		mTriCount = bm.GetNumIndices()/3;
		mIndices = new int[mTriCount*3];
		memcpy(mIndices, bm.GetIndices(), sizeof(int)*mTriCount*3);
		ret = mTriCount;
	}

	return ret;
}