That is certainly an important call yes. I guess my problem is that these two calls are not interchangeable:
#if 1 osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get()); #else osg::ref_ptr<osgViewer::GraphicsWindowWin32> window = new osgViewer::GraphicsWindowWin32(traits); gc = window.get(); #endif createGraphicsContext() will do a few more things which the creation of a osgViewer::GraphicsWindowWin32 does not. The question is really, is it possible to even consider this? Is there a mechanism for creating a custom GraphicsWindowWin32 or is this path doomed to fail. /Anders On Thu, Nov 12, 2015 at 3:31 PM, Trajce Nikolov NICK < trajce.nikolov.n...@gmail.com> wrote: > Did you tried something like: > > osgViewer::Viewer viewer; > viewer.getCamera()->setGraphicContext(gc); > > ? > > On Thu, Nov 12, 2015 at 2:52 PM, Anders Backman <ande...@cs.umu.se> wrote: > >> I notice that there is a major difference between osgViewer::Viewer and >> osgViewer::CompositeViewer: >> >> The following code: >> >> osgViewer::CompositeViewer viewer; >> >> osg::ref_ptr<osg::GraphicsContext::Traits> traits = new >> osg::GraphicsContext::Traits; >> traits->x = 100; >> traits->y = 100; >> traits->width = 1000; >> traits->height = 800; >> traits->windowDecoration = true; >> traits->doubleBuffer = true; >> traits->sharedContext = 0; >> >> osg::ref_ptr<osg::GraphicsContext> gc = >> osg::GraphicsContext::createGraphicsContext(traits.get()); >> >> osgViewer::View* view = new osgViewer::View; >> view->setName("View one"); >> viewer.addView(view); >> >> view->setSceneData(scene.get()); >> view->getCamera()->setViewport(new osg::Viewport(0, 0, traits->width >> / 2, traits->height / 2)); >> view->getCamera()->setGraphicsContext(gc.get()); >> >> viewer.realize(); // Context already created. No call to >> GraphicsWIndowWIn32::GraphicsWIndowWin32 will be called >> >> >> >> If I replace osgViewerCompositeViewer with a osgViewer::Viewer and remove >> the creation of View, I get: >> >> viewer.realize(); // A new context is created. A new call to >> GraphicsWIndowWIn32::GraphicsWIndowWin32 will be called >> >> >> So it seems that osgViewer::Viewer does not respect? the previously >> created GraphicsCOntext? >> >> /Anders >> >> >> >> On Thu, Nov 12, 2015 at 2:24 PM, Anders Backman <ande...@cs.umu.se> >> wrote: >> >>> That is quite explicit. I was thinking about some method for >>> intercepting events. >>> I tried fiddling with creating a custom GraphicsWindowWin32 class, but >>> it turns out that this is explicitly created internally in: >>> >>> osg::GraphicsContext* Win32WindowingSystem::createGraphicsContext( >>> osg::GraphicsContext::Traits* traits ) >>> { >>> ... >>> osg::ref_ptr<osgViewer::GraphicsWindowWin32> window = new >>> GraphicsWindowWin32(traits); >>> >>> } >>> >>> So this does not seem to be the way to catch windows messages. >>> My idea was that I could register my instance of the GraphicsWindowWin32 >>> to implement the virtual method: >>> >>> LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT >>> uMsg, WPARAM wParam, LPARAM lParam ) >>> >>> >>> Where I could catch all windows events. >>> >>> >>> Turns out that I do not have enough understanding when and where context >>> etc is created. >>> >>> It seems that a GraphicsWindowWIn32 is first created at the call to: >>> >>> osg::ref_ptr<osg::GraphicsContext> gc = >>> osg::GraphicsContext::createGraphicsContext(traits.get()); >>> >>> >>> And then at the call to: >>> >>> viewer->realize(); >>> >>> will also result in a call >>> to GraphicsContext::createGraphicsContext(Traits* traits), which in turn >>> will create yet another GraphicsWindowWin32. >>> >>> So there lies my problem, my call to viewer->realize() will override my >>> first call to GraphicsContext::createGraphicsContext(traits.get()); >>> >>> >>> Not sure how to get around this though. Ideas? >>> >>> /Anders >>> >>> >>> On Wed, Nov 11, 2015 at 5:05 PM, Trajce Nikolov NICK < >>> trajce.nikolov.n...@gmail.com> wrote: >>> >>>> Hi Anders, >>>> >>>> here is what I do for this on Windows >>>> >>>> while (!viewer->done()) >>>> { >>>> >>>> #if defined(_WIN32) >>>> MSG msg; >>>> if (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) >>>> { >>>> ::GetMessage(&msg, NULL, 0, 0); >>>> >>>> if (wins.size()) >>>> { >>>> osgViewer::GraphicsHandleWin32 *hdl = >>>> dynamic_cast<osgViewer::GraphicsHandleWin32*>(wins.at(0)); >>>> if(hdl) >>>> { >>>> WNDPROC fWndProc = >>>> (WNDPROC)::GetWindowLongPtr(hdl->getHWND(), GWLP_WNDPROC); >>>> if (fWndProc && hdl->getHWND()) >>>> { >>>> ::CallWindowProc(fWndProc,hdl->getHWND(),msg.message, msg.wParam, >>>> msg.lParam); >>>> } >>>> } >>>> } >>>> } >>>> #endif >>>> >>>> On Wed, Nov 11, 2015 at 4:21 PM, Anders Backman <ande...@cs.umu.se> >>>> wrote: >>>> >>>>> Hi. >>>>> >>>>> Trying the 3DConnexion SpaceNavigator with OSG. However I would like >>>>> to stay away from VRPN and such dependencies... >>>>> >>>>> I was wondering how to best intercept Windows messages from the >>>>> GraphicsWindowWin32 class. >>>>> >>>>> This class has a virtual method handleNativeWindowingEvent which I >>>>> would like to override to catch custom messages from my device. >>>>> >>>>> Would it be possible to implement a derived class and have that >>>>> instantiated instead of the standard osgViewer::GraphicsWindowWin32 one? >>>>> >>>>> Or is there a different method to listen to the messages: >>>>> >>>>> ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) >>>>> >>>>> Thanks, >>>>> Anders >>>>> >>>>> >>>>> >>>>> -- >>>>> __________________________________________ >>>>> Anders Backman, HPC2N >>>>> 90187 Umeå University, Sweden >>>>> and...@cs.umu.se http://www.hpc2n.umu.se >>>>> Cell: +46-70-392 64 67 >>>>> >>>>> _______________________________________________ >>>>> osg-users mailing list >>>>> osg-users@lists.openscenegraph.org >>>>> >>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>>> >>>>> >>>> >>>> >>>> -- >>>> trajce nikolov nick >>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> osg-users@lists.openscenegraph.org >>>> >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>>> >>> >>> >>> -- >>> __________________________________________ >>> Anders Backman, HPC2N >>> 90187 Umeå University, Sweden >>> and...@cs.umu.se http://www.hpc2n.umu.se >>> Cell: +46-70-392 64 67 >>> >> >> >> >> -- >> __________________________________________ >> Anders Backman, HPC2N >> 90187 Umeå University, Sweden >> and...@cs.umu.se http://www.hpc2n.umu.se >> Cell: +46-70-392 64 67 >> >> _______________________________________________ >> osg-users mailing list >> osg-users@lists.openscenegraph.org >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > > > -- > trajce nikolov nick > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > -- __________________________________________ Anders Backman, HPC2N 90187 Umeå University, Sweden and...@cs.umu.se http://www.hpc2n.umu.se Cell: +46-70-392 64 67
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org