<div dir="ltr"><div><br>On Windows, create a graphics context with the pbuffer flag set to true<br></div><div>and windowDecoration set to false.<br></div><div><br>        osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;<br>        traits->x = 0;<br>        traits->y = 0;<br>        traits->width = 640;<br>        traits->height = 480;<br>        traits->red = 8;<br>        traits->green = 8;<br>        traits->blue = 8;<br>        traits->alpha = 8;<br>        traits->windowDecoration = false;<br>        traits->pbuffer = true;<br>        traits->doubleBuffer = false; // or true as needed<br>        traits->sharedContext = 0;<br><br></div><div>        m_pbuffer = osg::GraphicsContext::createGraphicsContext(traits.get());<br>        if (!m_pbuffer.valid())<br>        {<br>            osg::notify(osg::NOTICE) << "Pixel buffer has not been created successfully. NOTE: update your dependencies folder if you see this error!" << std::endl;<br>            exit(1);<br>        }<br>        else<br>        {<br>            // Create an osgViewer running on top of a pbuffer graphics context<br>            m_viewer = new osgViewer::Viewer();<br><br></div><div>            // in my case I use a slave camera with ortho projection<br>            // to render whatever is needed<br></div><div>            m_camera = new osg::Camera;<br>            m_camera->setGraphicsContext(m_pbuffer.get());<br>m_camera->setComputeNearFarMode(osg::Camera::DO_NOT_COMPUTE_NEAR_FAR);<br>            m_camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);<br>            m_camera->setViewMatrix(osg::Matrix());<br>            m_camera->setProjectionMatrix(osg::Matrix::ortho2D(0, 1.0, 0, 1.0));<br>            m_camera->setViewport(new osg::Viewport(0, 0, 640, 480));<br>            m_camera->setDrawBuffer(GL_FRONT);<br>            m_camera->setReadBuffer(GL_FRONT);<br>            m_viewer->addSlave(m_camera.get(), osg::Matrixd(), osg::Matrixd());<br>            m_viewer->realize();<br><br><br>I do not know if the same would work on Linux, as pbuffers on Linux are an optional extension that might not be supported.<br><br></div><div>I get this to render at arbitrary frame rates, entirely decoupled from the screen's VBLANK interval.<br></div><div><br></div><div>Christian<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-18 16:47 GMT+02:00 Chris Thomas <span dir="ltr"><<a href="mailto:cthomas@soasta.com" target="_blank">cthomas@soasta.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
OK, I based my initial integration into my app on osgteapot.cpp. As with all the other examples, it os run via<br>
<br>
viewer.run();<br>
<br>
And this creates an output window in OSX (and I am assuming any other OS its run on). And thats the issue I have, I need OSG to run "headless", that is to say, producing no visible window in the OS.<br>
<br>
If OSG is rendering away, to a non visible buffer, I can then expose this to the user via my UI api (see above). Having this visible viewer, is the issue right now. Is there an option to run viewer with no visible display/window, or is there an alternative to viewer() ?<br>
<span class=""><br>
Thank you!<br>
<br>
Cheers,<br>
Chris<br>
<br>
------------------<br>
Read this topic online here:<br>
</span><a href="http://forum.openscenegraph.org/viewtopic.php?p=68420#68420" rel="noreferrer" target="_blank">http://forum.openscenegraph.<wbr>org/viewtopic.php?p=68420#<wbr>68420</a><br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.<wbr>openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.<wbr>org/listinfo.cgi/osg-users-<wbr>openscenegraph.org</a><br>
</div></div></blockquote></div><br></div>