基本描述
当我们的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的操作。
浏览次数:59326 次