Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Robert, Ah ok, so the GraphicsContext::Traits::sharedContext doesn't share the actual context, but allows object sharing between contexts. Thanks for clearing that up for me, I think this changes what I am looking for. The reason that I am looking into this, is because of the following measurements. In all tests, the screenspace view sizes and rendered objects are the same. 1. 6 views in one window (singlethreaded) 24.3 fps 2. 6 views in one window (multithreaded)46 fps In these two tests, we have 1 context and 1 draw thread. Enabling multithreading almost doubles the performance. So, performing culling on another thread proves to be very effective. 3. 6 views in separate windows (multithreaded) 11.7 fps 4. 6 views in separate windows with context sharing (singlethreaded)22 fps The last test cannot be done with multiple render threads, which makes sense. But I think (please correct me if I'm wrong), multiple separate cull threads should have no effect on it's correct operation. Looking at the performance difference between test 1 and 2, I am eager to see what culling on a different thread(s) would do here. So my question changes to: for test 4, is it possible to still use separate cull threads while we only use 1 draw thread. And if not, could you give us pointers on what should be taken into consideration if we want to implement this. Thanks! Cheers, Ben -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=72376#72376 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Ben, On 10 November 2017 at 11:11, Ben Meijeringwrote: > Isn't an opengl context already used by multiple windows when you use > GraphicsContext::Traits::sharedContext ? No. Sharing a GL object is not sharing the whole context. If you want to continue trying to hack some kind of solution then go for it, I really don't think it's worth pursing, but it's your time. At this point I have provided what insight I can, but I can't help you further than advice. Robert. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Robert, Thanks again for your quick response. Isn't an opengl context already used by multiple windows when you use GraphicsContext::Traits::sharedContext ? I also came across the following function: BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc ); A window device context can be specified here, so it would seem that you can change the window. I also came across the following: https://blog.gvnott.com/some-usefull-facts-about-multipul-opengl-contexts/ This also seems to state that a single opengl context can be used to render to multiple windows. Thank you! Cheers, Ben -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=72355#72355 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Ben, On 10 November 2017 at 09:41, Ben Meijeringwrote: > I want this 1 opengl context to be shared by multiple windows. I am afraid OpenGL doesn't work in this way, an OpenGL context is tied to a single window or pixel buffer. Robert. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Robert, Thank you for your response. I don't want to share the context or GL objects in multiple threads. Basically what I want is 1 draw thread for the 1 opengl context if have and 1 cull thread. I want this 1 opengl context to be shared by multiple windows. However, for each window that I create, a new draw thread is created, even when they share the same opengl context. So I was hoping that it was possible to have 1 draw thread per opengl context, instead of 1 draw thread per window (GraphicsContext). The opengl context would only be used by one thread, so thread safety shouldn't be an issue right? Cheers, Ben -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=72353#72353 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Draw thread per opengl context instead of per GraphicsContext
Hi Ben, Neither the OSG or OpenGL can provide thread safe sharing of GL objects when sharing contexts. If you want to run multiple context with multiple threads you will have to keep these contexts independent. Robert. On 9 November 2017 at 14:23, Ben Meijeringwrote: > Hi everyone, > > I want to use the GraphicsContext::Traits::sharedContext to render multiple > views (in multiple windows) that share the same context. > > I already read on some forums that the ThreadingModel::SingleThreaded should > be used. > > However, I would still like to use ThreadingModel::DrawThreadPerContext so > that the cull and draw thread can overlap. > > I tried this, but a draw thread is created per GraphicsContext and thus per > window. Because all these windows share an opengl context, I would have > expected that only 1 thread would have been created. > > This results in all sorts of problems. > > Is there a way in which I can use 1 draw thread per opengl context ? > And, if not, is this something that I can easily change by modifying the code > ? > > Thank you! > > Cheers, > Ben > > -- > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=72344#72344 > > > > > > ___ > osg-users mailing list > 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