菜鸟学习OGRE和天龙八部之十八: 获得档案(Archive)文件列表

要获得档案文件的文件列表,只要获得Archive的指针,就可以调用list()函数获得文件列表

 

但是如何获得Archive的指针呢,先看看资源的载入过程:

 

先从resources.cfg文件获取资源的路径,资源组,资源文件类型,这3个数据:

 ConfigFile cf;
 cf.load("resources.cfg");

 

再把这3个数据传入资源定位的函数:

ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);

资源定位到底做了什么,看看源码:

 

我们可以看到

        // Get archive
        Archive* pArch = ArchiveManager::getSingleton().load( name, locType );

这里,载入档案的时候就返回了档案的指针,这就是我们需要的,接下来他把这个指针传到了2个地方

        // Add to location list
  ResourceLocation* loc = new ResourceLocation();
  loc->archive = pArch;  // 这里传入一次

 

   // Index under full name, case sensitive
            grp->resourceIndexCaseSensitive[(*it)] = pArch;  // 这里再传入一次

 

理论上我们可以从这2个数据结构中获取指针,但是不幸的是,这些都是protected成员,获取不了的

而这个类又没有提供相关的获取函数,怎么办呢?难道又要改OGRE源码么?

 

看看前面的这个函数

        // Get archive
        Archive* pArch = ArchiveManager::getSingleton().load( name, locType );

如果已经载入了一次,我们再载入一次,会发现什么情况

 

看了源码,豁然开朗!!!

原来载入档案的时候,他会先查看这个档案资源已经载入了没有,如果已经载入了,直接返回这个档案资源的指针!!!

 

所以我们在外部再载入一次,就可以获得这个资源的指针:

 

到此,就已经获得了列表文件信息,

用MFC对话框打开看看:

 

最后效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值