最近为做DX项目的同学封装了一个资源打包工具和资源解包类库,主要功能是整合零散的资源,和资源保护。
1.资源打包工具QuartzFilePackEdit
--------------------------------------------------
同学的项目自己编辑的资源非常有限,很多资源都是从别的游戏中七拼八凑出来了。看到别的游戏都有自己的文件资源包,自己也很希望把自己的资源打包。最近写了一个QuartzFilePackEdit工具,用来整合资源打包的,这个工具目前支持多文件打包整合使用非常方便,只需要添加资源到文件列表中点击保存打包就可以了,如果添加了重复的资源,可以在列表中双击文件将其删除。压缩的文件只能是*.QFT文件格式,*.QFT文件中除了刚才我们打包的文件以外,他还生成了一个文件资源表,因为我们还要对这个文件解包。文件资源表也可以导出一个备份。免得以后自己也忘了这个资源包里面都有哪些数据了。
2.资源解包类 CQuartzFileUnZip
-------------------------------------------------------------------------------
利用这个库,可以对*.QFT文件内部的数据进行读写。这个库的读写操作完全是在包内完成,而不用加压到临时目录,使用非常快捷,读写速度也很快。这个库现在还在测试当中,目前只提供了对Dx的纹理的直接读取;音乐文件和其他文件因为文件格式压缩解压等问题测试当中。
这个库首先需要通过bool OpenSourceFromFile(char* sname,char *pwd);函数打开资源文件,输入的参数分别是文件名和密码,如果没有设定密码可以不填pwd;如果打开文件出了问题返回失败;
接口函数bool GetTextureByName(char * sName,LPDIRECT3DTEXTURE9 &pTexture);可以读取这个包内的资源,第一个参数是资源名称,比如是map.png,第二个是返回值,返回的是获取的d3d纹理;
在程序中也可以动态获取当前文件信息,比如你已经忘记了自己资源包里面的文件名,可以调用
std::list m_lFile;
这个表中保存了所有的文件包内包含的文件信息
以下是在DX例题中 直接读取文件包内部文件获取的纹理资源渲染的一个翻滚的圆筒:
资源在我的共享里面有。
http://download.csdn.net/source/2298451