It is possible that the MFC screen needs to be told to repaint. If so, try sending a WM_PAINT message to the screen by using CWnd::Invalidate();
PhilT -----Original Message----- From: osg-users [mailto:[email protected]] On Behalf Of [email protected] Sent: 31 January 2015 10:55 To: OpenSceneGraph Users Subject: Re: [osg-users] 答复: Blank screen Hi Clement, about your second screen: if you create your OpenGL context on the external screen - have you checked if this screen also has hardware acceleration? I remember having a smimilar behaviour with another toolkit. Black screen when creating the OGL context not on the primary screen with OGL hardware acceleration enabled... Perhaps this is a hint... Greets, Patrik On 31.01.2015 11:43, Robert Osfield wrote: > Hi Clement, > > I'm afraid I can't help you, I not a windows expert and don't know MFC > at all, I'm not the author of the osgviewerMFC example. > > The code snippets you have provide don't really give me any clues to > what might be amiss. > > I don't have any means of recreating the problems you are seeing with > your application, or you hardware and data. > > All I can say it general it is possible to changing window sizes, and > it is possible to create new windows without problems, others do and > I've done it lots myself but never with MFC. I have no clue with it's > a MFC specific issue you are up against, or how you've gone around > implementing it. > > Robert. > > On 31 January 2015 at 03:12, <[email protected] > <mailto:[email protected]>> wrote: > > 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 [[email protected] > <mailto:[email protected]>] 代表 Robert > Osfield [[email protected] <mailto:[email protected]>] > 发送时间: 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, > <[email protected]<mailto:[email protected] > <mailto:[email protected]>>> 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 > [email protected] > > <mailto:[email protected]><mailto:[email protected] > <mailto:[email protected]>> > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph. > org > > _______________________________________________ > osg-users mailing list > [email protected] > <mailto:[email protected]> > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph. > org > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph. > org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

