osg(osg中文社区)-osgEarth-osgViewer-基于OpenGL-开源三维渲染引擎-图形引擎-虚拟仿真工具-osg教程-osg仿真

Views 和 Viewers

当前位置:首页 > 学习支持 > 基础知识

基本描述

当我们的OSG程序需要提供一个viewer时,我们便有两个选择Viewer或者CompositeViewer,他们都是从osgViewer::ViewerBase派生而来,ViewerBase提供的功能有信息收集、线程以及帧中的某些回调阶段等。

View自己可以包含多个相机,而且可以控制场景、DisplaySettings、EventHandlers以及相机操作器等。

osgViewer::Viewer 从 ViewerBase 和 View派生而来,如果只需要包含一个View那使用Viewer是最方便不过的了。

osgViewer::CompositeViewer则不同,它包含了一系列的View。


应用选用哪个Viewer

参考如下文章:使用CompositeViewer


窗口

窗口的创建只与图形上下文(GraphicsContext),每个GraphicsContext都有一个窗口。当使用osgView::View里的比如setUpViewAcrossAllScreens(), setUpViewOnSingleScreen(), 或者setUpViewInWindow()方法时,一次便会产生一个窗口。因此使用CompositeViewer创建多个View时,会创建多个窗口。如果需要窗口的边框修饰,可以自定义窗口修饰(Traits)。一个窗口也可以同时存放之外View,通过Traits::SharedContext方法,能过Traits::windowDecoration 设置为false关闭窗口修饰。

osgwindows和osgcamera例子中有包含对Window和camera以及Viewer的操作。