|

楼主 |
发表于 2009-4-15 09:12:23
|
显示全部楼层
void CCoreOSG::InitManipulators(void)
{
//创建trackball操作器
trackballs = new osgGA::TrackballManipulator();
trackballb = new osgGA::TrackballManipulator();
}
void CCoreOSG::InitSceneGraph(void)
{
mRoot=new osg::Group;
mModel = osgDB::readNodeFile("cow.osg");
mRoot->addChild(mModel.get());
}
void CCoreOSG::InitCameraConfig(void)
{
// 局部变量存放窗口矩形
RECT rect;
// 创建一个viewer
// mViewer = new osgViewer::Viewer();
mViewer=new osgViewer::CompositeViewer();
Viewers=new osgViewer::Viewer() ;
Viewerb=new osgViewer::Viewer();
// 得到当前窗口矩形
::GetWindowRect(m_hWnd, &rect);
// 初始化图形描述什么东西,反正就是那么回事
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
// 初始化窗口变量,为OSG所用
osg::ref_ptr<osg::Referenced> windata = new osgViewer::GraphicsWindowWin32::WindowData(m_hWnd);
// 设置一些个参数
traits->x = 0;
traits->y = 0;
traits->width = rect.right - rect.left;
traits->height = rect.bottom - rect.top;
traits->windowDecoration = false;
traits->doubleBuffer = true;
traits->sharedContext = 0;
traits->setInheritedWindowPixelFormat = true;
traits->inheritedWindowData = windata;
// 创建图形上下文
osg::GraphicsContext* gc = osg::GraphicsContext::createGraphicsContext(traits.get());
// 初始化一个相机
osg::ref_ptr<osg::Camera> cameras = new osg::Camera;
osg::ref_ptr<osg::Camera> camerab = new osg::Camera;
// 绑
cameras->setGraphicsContext(gc);
camerab->setGraphicsContext(gc);
cameras->setRenderOrder((osg::Camera::RenderOrder)2);
camerab->setRenderOrder((osg::Camera::RenderOrder)1);
////相机视口设置
camerab->setViewport(new osg::Viewport(traits->x, traits->y,traits->width ,traits->height ));
cameras->setViewport(new osg::Viewport(traits->width/3*2, traits->height/3*2, traits->width/3, traits->height/3));
// 添加相机到VIEWER
Viewers->addSlave(cameras.get());
Viewerb->addSlave(camerab.get());
Viewers->setCameraManipulator(trackballs.get());
Viewerb->setCameraManipulator(trackballb.get());
Viewers->setSceneData(mRoot.get());
Viewerb->setSceneData(mRoot.get());
mViewer->addView(Viewerb);
mViewer->addView(Viewers) ;
// 实现VIEWER
mViewer->realize();
}
现在右上角的小视口对鼠标是无视的。
[ 本帖最后由 slwebwildwolf 于 2009-4-15 09:22 编辑 ] |
|