当前位置:   article > 正文

从内存数据读取osg::node_osgdb::readnode istream

osgdb::readnode istream

起因:从打包的大文件中提取出部分节点数据在内存中合并到一个节点中,不想把提取出的数据先写到磁盘上然后再读到内存节点

目的:从内存中读node

实现:由于osgDB::ReaderWriter提供了readNode(std::istream&, ...),只要由内存数据构造出std::istream即可

实例:

 

  1. class StreamBuffer : public std::basic_streambuf<char, std::char_traits<char>>
  2. {
  3. public:
  4. StreamBuffer(char * buffer, int size){setg(buffer, buffer, buffer+size);}
  5. };
  6. uchar *pOutputData = hugeFile.map(_startPos, _fileSize );
  7. osgDB::ReaderWriter* rw = osgDB::Registry::instance()->getReaderWriterForExtension("ive");
  8. if ( rw )
  9. {
  10. StreamBuffer sb((char*)pOutputData, _fileSize );
  11. std::istream is(&sb);
  12. osgDB::ReaderWriter::ReadResult rr = rw->readNode(is);
  13. osg::ref_ptr<osg::Node> node = rr.takeNode();
  14. if(group && node)
  15. group->addChild(node);
  16. }
  17. hugeFile.close();


参考:http://blog.csdn.net/linyanwen99/article/details/8592857

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/314935
推荐阅读
相关标签
  

闽ICP备14008679号