本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html
作者写的比较好,再次收藏,希望更多的人可以看到这个文章

互联网是是一个相互分形并学习的平台,我希望我每个人可以将我们认为有价值的东西,在不损害他人利益的情况下分享给更多的人。

多视口

多视口的原理是自己创建所有的相机,包括主相机,这样我们可以随意的添加相机。
首先我们要创建视口必须有以下几件东西,第一,了解整个屏幕的分辩率有多大,这样可以分辩视口的大小,好分割开来。第二,上下文。我们必须自己手动的打开设置上下文。每个视口的数据也不一定非要与主视口的相同。但是矩阵一般是同步的。也就是说:主视口里有栋楼,从视口里可以是平面图什么的。了解整个屏幕的分辩率可以用这个类:osg::GraphicsContext::WindowingSystemInterface意思是说系统接口,可以获得当前环境的各种信息。有一方法叫getScreenResolution,可以得到分辩率。之后上下文了,osg::GraphicsContext里面可以设置窗口大小,缓存什么的,大多数的东西都在这里面设置。

LOD

LOD即level of details
LOD比起PagedLOD而言并非十分的常用,有个地方用的特别多,那就是把一个好好的模型加一个视矩压成一个模型,这个模型比以前的看来就是多了个视矩的控制,远了看不见,近了能看见。
在模型中加LOD头结点的方式如下所示:

#include<osgDB/Registry>
#include<osgDB/ReadFile>
#include<osgDB/ReaderWri ter>
#include<osgDB/Wri teFile>
#include<osg/Node>
#include<osgViewer/Viewer>
int main()
{
osgViewer::Viewer viewer;
//读取模型
osg::Node*node=osgDB::readNodeFile("fountain.osg");
//隐藏结点
node->asGroup()->getChild(0)->setNodeMask(0);
viewer.setSceneDa ta(node);
//输出结点到free.os g中
osgDB::writeNodeFile(*(viewer.getSceneData()),"free.osg",osgDB::Registry
::instance()->getOptions());
return 0;
}

Imposter

Imposter用动态图片来替换场景的实用技术:imposter.可以把它法做LOD一样使用,只不过它
不是变模型变没有,而是使它换成一张图
示例代码如下:设置一个视矩,超过这个视距模型会变为一张动态图

#include<osgViewer/Viewer>
#include<osgGA/TrackballManipulator>
#include<osgSim/Impostor>
#include<osgDB/ReadFile>
int main(inta rgc,cha r**a rgv)
{
//申请viewer
osgViewer::Viewer viewer;
//读取模型
osg::Node*node=osgDB::readNodeFile("ceep.ive");
//申请一个i mpos tor结点
osgSim::Impos tor*sim=new osgSim::Impostor;
//在到之内显示模型,之外显示贴图
sim->addChild(node,0,50000);
sim->setImpostorThreshold(1000);
osg::Group*root=new osg::Group;
root->addChild(sim);
viewer.setSceneData(root);
viewer.realize();
viewer.run();
return 0;
}

最新文章

  1. 模板列onclick事件中绑定跳转页参数(onclick location.href Eval)
  2. Oracle函数脚本记录
  3. Web服务器amp搭建
  4. DCOM中的APPID的用处,以及RemoteServerName的传递问题
  5. Slideout吐槽
  6. WIN7下关闭驱动数字签名检查的方法
  7. [转载]VIM命令合集
  8. Ini文件操作类
  9. USACO Section 4.2 The Perfect Stall(二分图匹配)
  10. 一、什么是hadoop?
  11. centos 命令
  12. requireJS教程
  13. 你不知道的JavaScript--Item3 隐式强制转换
  14. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
  15. Python【第三篇】文件操作、字符编码
  16. 【转】10分钟就能学会的.NET Core配置
  17. DevExpress--TreeList节点添加图片
  18. 《移山之道》Reading Task——by12061154Joy
  19. 关于jvm钩子 Runtime.getRuntime().addShutdownHook
  20. Alamofire源码导读五:错误表示

热门文章

  1. Hibernate之openSession与getCurrentSession的区别
  2. iOS 数据库sqlite3.0操作--超简单--看我就够啦
  3. input输入框中list属性不能没有效果
  4. 6.可见性关键字(volidate)
  5. 可能是catalan数吧
  6. 20181030NOIP模拟赛T2
  7. MySQL数据库 : 基本语句
  8. go语言学习(一):数组/切片
  9. 详解PreparedStatement
  10. select epoll poll