osgViewer.CompositeViewer是OpenSceneGraph中的一个类,用于支持多窗口视图和多线程操作,可以将多个osgViewer.Viewer对象组合为一个窗口,从而实现多个场景的同时渲染。
osgViewer.CompositeViewer继承自osgViewer.ViewerBase类。
#include <osgViewer/CompositeViewer>
构造函数,创建一个osgViewer.CompositeViewer对象。
添加一个osgViewer.Viewer对象到CompositeViewer中。
参数:
设置OSG场景图的线程模型。
参数:
实现所有的添加视图,然后调用真正的realize() ,如果渲染器已经realized,则该函数只是调用所有视图的realize()。
更新所有视图,并将结果渲染到所有窗口中。
启动渲染循环,并且在渲染完成后退出。
停止渲染循环,并在渲染完成后退出。
设置键盘事件是否停止循环。
参数:
设置是否使用鼠标指针。
参数:
设置用户希望场景渲染的帧率。
参数:
设置要显示的场景图。
参数:
设置CompositeViewer对象的线程数。
参数:
#include <osgViewer/Viewer>
#include <osgViewer/CompositeViewer>
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer;
osg::ref_ptr<osgViewer::Viewer> viewer2 = new osgViewer::Viewer;
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("cow.osg");
viewer1->setSceneData(model);
viewer2->setSceneData(model);
osg::ref_ptr<osgViewer::CompositeViewer> compositeViewer = new osgViewer::CompositeViewer;
compositeViewer->addView(viewer1.get());
compositeViewer->addView(viewer2.get());
compositeViewer->realize();
while (!compositeViewer->done())
{
compositeViewer->frame();
}
return 0;
}