1. 读取文件

    由调用关系可知需要继承OsgDB::readerWriter,重写其中的readNode;模型数据无非是点集,解析即可,具体调用关系如下:
    OSG在DoRead层区分文件类型,不同类型使用不同的Osgdb_xx.dll,每个dll在进入时需要注册到一个list表中,在读取文件是循环列表,查看能否读取成功,我们需要做的就是自定义编写dll库,此库继承OsgDB::readerWriter,其中重要的为注册REGISTER_OSGPLUGIN(ttt, FSReaderWriter)与ReadNode;`
#include <sstream>
#include "OsgCommon.h"
#include <osg/Image>
#include <osg/Group>
#include <osg/Notify>
#include <osg/Version>
#include <Windows.h>
#include <osgDB/FileNameUtils>
#include <osgDB/FileUtils>
#include <osgDB/fstream>
#include <osgDB/Registry>
#include <osgDB/Input>
#include <osgDB/Output>
#include <osg/Shape>
#include <osg/Geode>
#include <osg/ShapeDrawable>
#include <osg/ref_ptr>
#include <iostream>
using namespace osg;
using namespace osgDB;class FSReaderWriter : public ReaderWriter
{public:FSReaderWriter(){supportsExtension("ttt", "freex");}virtual const char* className() const { return "FSReaderWriter"; }virtual ReadResult readNode(const std::string& file, const Options* opt) const{std::string ext = osgDB::getLowerCaseFileExtension(file);if (!acceptsExtension(ext)) return ReadResult::FILE_NOT_HANDLED;std::string fileName = osgDB::findDataFile( file, opt );if (fileName.empty()) return ReadResult::FILE_NOT_FOUND;osgDB::ifstream fin(fileName.c_str());if (fin){return readNode(fin, opt);}return 0L;}virtual ReadResult readNode(std::istream& fin, const Options* options) const{fin.imbue(std::locale::classic());Input fr;fr.attach(&fin);osg::ref_ptr<osg::Geode> geode= new osg::Geode();osg::Vec3 center;float radius;while (!fr.eof()){if (fr.matchSequence("%f%f%f%f")){fr.readSequence(center);fr.readSequence(radius);geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(center, radius)));}else{++fr;}}return geode;}
};// now register with Registry to instantiate the above
// reader/writer.
REGISTER_OSGPLUGIN(ttt, FSReaderWriter)

osg20讲(读文件)相关推荐

  1. 从fread和mmap 谈读文件的性能

    [原文] 1. https://www.byvoid.com/blog/fast-readfile/ 2. http://blog.csdn.net/jwh_bupt/article/details/ ...

  2. (87)FPGA读文件激励(readmemb)

    (87)FPGA读文件激励(readmemb) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA读文件激励(readmemb) 5)结语 1.2 FPGA简介 F ...

  3. (86)FPGA读文件激励(readmemh)

    (86)FPGA读文件激励(readmemh) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA读文件激励(readmemh) 5)结语 1.2 FPGA简介 F ...

  4. python2读文件,python之文件的读写(2)

    小R昨天因为在研究weblogic的漏洞就没来得及学习python(好吧,这都是借口,懒了,大家可不能像我这样.要坚持每天都学).   这个进度是有点慢呀.哎呀,没事没事,我还年轻,才20岁.  哈哈 ...

  5. spring batch 通过配置文件的方法读文件

    spring batch提供了多种方式读数据,比如读文件,读数据库,读xml等,提供了丰富了实现类操作,也可以根据自己的需求实现接口ItemReader去自定义. 工作中我们常用的是读文件(.csv. ...

  6. 为什么读文件操作一次读取字节数组最大是8192

    为什么读文件操作一次读取字节数组最大值是8192 ? 最近做项目遇到将服务器上的文件下载到本地操作.其中用到了一个方法Files.copy 调试过程中查看源码发现一个很有意思的事 // buffer ...

  7. Python零基础速成班-第8讲-Python文件操作File IO、高级文件处理模块shutil、CSV、JSON、多线程基础

    Python零基础速成班-第8讲-Python文件操作File I&O.高级文件处理模块shutil.CSV.JSON.多线程基础 学习目标 文件操作File I/O 高级文件处理模块shut ...

  8. Java多种方式读文件,追加文件内容,等对文件的各种操作

    一.多种方式读文件内容.1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 import java.io.BufferedReader;import java. ...

  9. 读一个文件的java程序_java 读文件的几种方法(一)

    先前使用一直很混乱的使用过这些方法,但都没有好好做过总结. 这两天趁有空,小结一下. 1.输入输出流 说起 java的 读写文件不得不说java中的输入输出流对象, 被读取的对象为输入流(如某个文件, ...

  10. c++ 读文件 文件指针 继续读_FatFs文件系统使用笔记

    关于FatFs文件系统的指引 关于FATFS的使用记录一.提前说明二.各文件说明三.使用说明       3.1 diskio.c函数的编写       3.2 f_open读写性质说明        ...

最新文章

  1. trinosql_prestosql问题
  2. (一)深入浅出图解Git,入门到精通(保姆级教程)
  3. 程序员最害怕的5件事,你中招了吗?
  4. 《集体智慧编程》数学公式
  5. pythonif有多个条件怎么办,Python if有多个条件怎么办
  6. 第6章 循环、批量传送和条件转移-1.34h
  7. Mysql问题 ERROR 1054 (42S22): Unknown column ‘password‘ in ‘field list‘
  8. 不会框架不要紧,我带你自定义框架
  9. 虚拟化试题1-网络和存储
  10. 机器学习实验一: 简易knn模型
  11. matlab 内存不足
  12. SpringMVC 通过Map、Model和ModelMap向页面传值
  13. iOS 屏幕尺寸、分辨率、适配
  14. opencv滤镜-素描
  15. 基因-药物相互作用数据库 DGIdb 介绍
  16. 后台管理项目开发流程
  17. 数组排序函数 从小到大排序 C语言
  18. ActivePerl shellcode
  19. java框架的利与弊_Java编程的利与弊
  20. 记录一次C# 使用FFmpeg提取音频文件

热门文章

  1. JetPack4.2.2系统上修改TX2配置为配置3
  2. Java SE/EE/ME
  3. Mybatis框架的一点个人心得
  4. 2019 计算机专业课堂测验1
  5. 第九章 ——数据结构
  6. ESP8266-Arduino编程实例-BMP180气压温度传感器驱动
  7. 我的2021结束的很美好很美好
  8. 全球及中国无线电测试测量行业细分产品市场规模发展趋势分析及竞争战略格局研究预测
  9. window下使用CMUSphinx实现中文识别
  10. 【深度学习】GAN生成对抗式网络原理