这个例子演示了多视窗的例子。
今天我们刨根问底,看看窗体的创建过程中都干了什么。
CompositeViewer中多了typedef std::vector< osg::ref_ptr<osgViewer::View> > RefViews;
实现多view。viewer和compositeviewer都是继承自view。
如果命令行是-1,则只增加一个view,并且这个view设置view->setUpViewAcrossAllScreens();
>setUpViewAcrossAllScreens创建了一个全屏的窗体。
进入这个函数看看,第一句话:
osg::GraphicsContext::WindowingSystemInterface* wsi =
osg::GraphicsContext::getWindowingSystemInterface();
if (!wsi)
{
OSG_NOTICE<<"View::setUpViewAcrossAllScreens() : Error, no WindowSystemInterface available,
cannot create windows."<<std::endl;
return;
}
判断了当前是否存在窗体接口,这个是怎么来的呢?
从osgViewer::CompositeViewer viewer(arguments);开始。
看GraphicsWindowWin32.cpp中static RegisterWindowingSystemInterfaceProxy
createWindowingSystemInterfaceProxy;定义在osgViewer的命名空间中ÿ
今天我们刨根问底,看看窗体的创建过程中都干了什么。
CompositeViewer中多了typedef std::vector< osg::ref_ptr<osgViewer::View> > RefViews;
实现多view。viewer和compositeviewer都是继承自view。
如果命令行是-1,则只增加一个view,并且这个view设置view->setUpViewAcrossAllScreens();
>setUpViewAcrossAllScreens创建了一个全屏的窗体。
进入这个函数看看,第一句话:
osg::GraphicsContext::WindowingSystemInterface* wsi =
osg::GraphicsContext::getWindowingSystemInterface();
if (!wsi)
{
OSG_NOTICE<<"View::setUpViewAcrossAllScreens() : Error, no WindowSystemInterface available,
cannot create windows."<<std::endl;
return;
}
判断了当前是否存在窗体接口,这个是怎么来的呢?
从osgViewer::CompositeViewer viewer(arguments);开始。
看GraphicsWindowWin32.cpp中static RegisterWindowingSystemInterfaceProxy
createWindowingSystemInterfaceProxy;定义在osgViewer的命名空间中ÿ