Exemplo n.º 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;
}
Exemplo n.º 2
0
NxU32 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.
{

	NxU32 ret = 0;

	delete mVertices;
	mVertices = 0;
	delete mIndices;
	mIndices = 0;
	mVertexCount = 0;
	mTriCount = 0;


  BuildMesh bm;

  OBJ obj;

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


	const FloatVector &vlist = bm.GetVertices();
	const IntVector &indices = bm.GetIndices();
	if ( vlist.size() )
	{
		mVertexCount = (NxI32)vlist.size()/3;
		mVertices = new NxF32[mVertexCount*3];
		memcpy( mVertices, &vlist[0], sizeof(NxF32)*mVertexCount*3 );

		if (textured)
		{
			mTexCoords = new NxF32[mVertexCount * 2];
			const FloatVector& tList = bm.GetTexCoords();
			memcpy( mTexCoords, &tList[0], sizeof(NxF32) * mVertexCount * 2);
		}

		mTriCount = (NxI32)indices.size()/3;
		mIndices = new NxU32[mTriCount*3*sizeof(NxU32)];
		memcpy(mIndices, &indices[0], sizeof(NxU32)*mTriCount*3);
		ret = mTriCount;
	}


	return ret;
}