查看: 1370|回复: 7

OSG中模型加载问题

[复制链接]

该用户从未签到

发表于 2010-7-13 17:32:20 | 显示全部楼层 |阅读模式
通常我们调用模型是采用如下的方法
osg::ref_ptr<osg::Node> loadedModel0;
std::string file0("flight.flt");
loadedModel0 = osgDB::readNodeFile(file0);

现在我想从内存中读取模型,方法如下:
char  szBuffer[0x10000];
myReadFile(hFile, szBuffer, sizeof(szBuffer), &dwBytes, NULL);
其中ReadFile为自定义函数,作用是将模型文件的内容读入到szBuffer中。hFile为模型文件的句柄
现在模型文件的内容已经存入了szBuffer中,那么如何才能将其加载到osg::Node中呢?
请赐教,多谢多谢

该用户从未签到

发表于 2010-7-13 22:11:03 | 显示全部楼层
你把这个流传给osgDB::ReaderWriter的读取就可以了~
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2010-7-13 23:58:20 | 显示全部楼层
    从流里读取模型反倒简单了,参考FLTReaderWriter中的代码,可以直接将流传入到virtual ReadResult readNode(std::istream& fin, const Options* options) const 中。

    该用户从未签到

     楼主| 发表于 2010-7-15 13:41:09 | 显示全部楼层
    我的代码如下
    osgDB::ReaderWriter read;
    osgDB::ReaderWriter::ReadResult result;
    //读文件

    result = read.readNode(szBuffer);
    bool l = false;
    l = result.validNode();
    loadedModel = (result).getNode();
    l一直为false,loadedModel也没有值
    请帮忙看看哪里写的 不对
    感谢

    该用户从未签到

    发表于 2010-7-15 23:44:27 | 显示全部楼层
    您跟踪一下您的数据,,看您的流是否正确之类的,,,调试下

    该用户从未签到

     楼主| 发表于 2010-7-17 10:31:43 | 显示全部楼层
    数据应该没有问题,我将这个流写入文件之后,文件可以正确打开。一直有个疑问readNode如何识别我所采用的数据格式的?比如我这个流中的 数据是flt格式的,那么readNode又怎么知道的呢 ?

    该用户从未签到

    发表于 2010-7-17 10:57:31 | 显示全部楼层
    osgDB::ReaderWriter* rw =
             osgDB::Registry::instance()->getReaderWriterForExtension(extension);
    这个当然您得初始化ReaderWriter,,直接传递是没有意义的

    该用户从未签到

     楼主| 发表于 2010-7-19 14:38:39 | 显示全部楼层
    谢谢,加了那一句后问题解决了。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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