今天更新了CQuartzFileUnZip类库
昨天完成了CQuartzFileUnZip类库读取*.QFT文件包中的图片信息接口,今天又努力了一天,终于把.X文件的接口完成了!
现在这个类库可以直接读取压缩包里面的.x文件,并把.x文件内部的信息全部以info的列表方式返回;这样可以轻松的绘制.x文件信息了!
简单介绍一下这个类的用法。
程序开始的地方跟原来的D3D一样,声明mesh模型指针:
LPD3DXMESH g_pMesh = NULL; // Our mesh object in sysmem
CQuartzFileUnZip g_MDFile;
/********读取QFT文件内部数据********/
//打开资源文件
g_MDFile.OpenSourceFromFile("test.QFT","");
//根据资源名称读取资源文件,并返回mesh指针和x文件内部信息xFlieInfo;
if(!g_MDFile.GetMeshByName("tiger.X",g_pMesh,g_xinfo))
return false;
其中pMesh内包含的就是QFT文件中模型数据tiger.X模型指针。
g_xinfo内包含了tiger.X文件中的材质信息和纹理信息。
其他的操作和原来的程序就没有区别了,我们在Render()里渲染老虎模型:
std::list<XFILEINFO*>::iterator it = g_xinfo.begin();
for( DWORD i=0; i<g_xinfo.size(); i++,++it )
{
// Set the material and texture for this subset
g_pd3dDevice->SetMaterial( (*it)->pd3dxMaterials );
g_pd3dDevice->SetTexture( 0, (*it)->pTexture);
// Draw the mesh subset
g_pMesh->DrawSubset( i );
}
值得注意的是,这里获取的g_pmesh指针和材质,纹理指针都是内存数据,CQuartzFileUnZip类不会释放资源的,需要程序员手动调用释放。
资源打包编辑器和CQuartzFileUnZip库文件在下载资源里可以找到。
QuartzFilePackEdit v0.3 打包工具下载:
http://download.csdn.net/source/2300215
http://download.csdn.net/source/2300197