Hi Robert, This is the code for showing image in MFC window. (I followed the osgviewerMFC example).
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits; traits->x = 0; traits->y = 0; traits->windowDecoration = false; traits->doubleBuffer = true; traits->sharedContext = 0; traits->setInheritedWindowPixelFormat = true; traits->width = rect.right - rect.left; traits->height = rect.bottom - rect.top; traits->inheritedWindowData = new osgViewer::GraphicsWindowWin32::WindowData(m_hWnd); osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get()); osgCamera->setGraphicsContext(gc.get()); It requires to set window handle (HWND) into Trait to show image into MFC window. The window decoration is already set to false. If I changed the size, the osgViewer is still inside the MFC window. I would like to switch the osgviewer to display on external monitor (full screen) programmatically. I tried many methods and seems I can do it with creating a new GraphicsContext and new Trait without assign any HWND and specify the screen number, such as... osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface(); osg::GraphicsContext::ScreenIdentifier si; si.readDISPLAY(); traits->hostName = si.hostName; traits->displayNum = si.displayNum; traits->screenNum = si.screenNum; The method seems working fine, but the image is already blank at the first. Once I changed DisplaySettings with grayscale and stereo mode, the image will come out properly. I would like to know why replaced a new GraphicsContext with existing camera will cause the blank problem and why the image can show up again after changing some display settings. Or I already did a wrong way to switch the current viewer to show on full screen. Please advise. Thanks. Regards, Clement ________________________________________ 发件人: osg-users [osg-users-boun...@lists.openscenegraph.org] 代表 Robert Osfield [robert.osfi...@gmail.com] 发送时间: 2015年1月31日 03:18 收件人: OpenSceneGraph Users 主题: Re: [osg-users] Blank screen Hi Clement, My guess is that way you hacking the screen size change by creating a new context is screwing up the way context ID's and OpenGL objects are managed. My recommendation would be to just switch off window decoration and change the window size of the context rather than creating a new one. Robert. On 30 January 2015 at 16:04, <clement....@csiro.au<mailto:clement....@csiro.au>> wrote: Hi all, I am trying to output my volume image on full screen with MFC by changing GraphicsContext in camera. First I get GraphicsContext from camera and then close it. Then I created a new GraphicsContext with setting screen number and size of full screen and then set it to camera. It works to show full screen and also restore back to mfc window, but the image cannot show probably. There is no image on screen (volume data) and show the axes I drawn only. If I changed the display setting to stereo (Anaglyphic) and set grayscale on and off. Then the image will come out. I am not sure how to fix it. See if anyone can help me. Thanks. Regards, Clement _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org<mailto:osg-users@lists.openscenegraph.org> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org