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

Reply via email to