查看: 1093|回复: 3

请教关于自己写的模型读写器类只能知己用的方法。(osg 版本 2.8.2)

[复制链接]

该用户从未签到

发表于 2011-6-20 08:45:39 | 显示全部楼层 |阅读模式
本帖最后由 ptr 于 2011-6-20 08:48 编辑

意图:做的模型文件有自己的后缀名,只有自己的程序才能读出;思路:先做出一个osgdb_abc.dll,然后在自己的程序中作如何修改:
  1. osgDB::Registry* rs=osgDB::Registry::instance();
  2.         std::string libraryName = rs->createLibraryNameForFile("x.abc");
  3.         if (rs->loadLibrary(libraryName)==osgDB::Registry::LOADED) {  
  4.      if (rs->getReaderWriterList().size()==0)           return;//程序执行到这里。 }   
复制代码


        这里通过rs->getReaderWriterList()获取加载进来的自定义读写器的类指针。
然后给这个类传递一些参数,然后在类中进行判断,以达到只有本程序才能使用该读写器类。
发现loadLibrary(libraryName)成功,REGISTER_OSGPLUGIN(abc, ReaderWriterABC)
也执行了,rs->getReaderWriterList()为空,请指教如何获得该读写器类的指针。

该用户从未签到

 楼主| 发表于 2011-6-20 08:49:04 | 显示全部楼层
贴子里的代码段格式咋也整不好。

该用户从未签到

 楼主| 发表于 2011-6-20 11:19:42 | 显示全部楼层
我知道啥原因了,是因为我在debug的时候,loadLibrary()加载的dll是Release版本,
不过我生成的Debug版本的osgdb_abcd.dll咋也加载不成功。错哪了。

该用户从未签到

 楼主| 发表于 2011-6-20 11:26:44 | 显示全部楼层
我又知道啥原因了,原来在osgdb_abcd.dll里面加载的是Release版本的lib,更换后,一切正常。
如有问题我再来。谢谢大家。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表