The following piece of code writes the same error to the console:

Code:
!!! pbuffer is VALID!


PixelBufferWin32::makeCurrentImplementation, wglMakeCurrent error: Die angeforde
rte Ressource wird bereits verwendet.

Error: OpenGL version test failed, requires valid graphics context.
PixelBufferWin32::realizeImplementation, wglShareLists error: Die angeforderte R
essource wird bereits verwendet.

PixelBufferWin32::makeCurrentImplementation, wglMakeCurrent error: Die angeforde
rte Ressource wird bereits verwendet.



so, wglMakeCurrent(_hdc, _hglrc) fails in 
bool PixelBufferWin32::makeCurrentImplementation()

see
http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.6.1/src/osgViewer/PixelBufferWin32.cpp

May this be a Windows bug or OSG's implementation for Windows bug? 




        ::osgViewer::Viewer * viewer = new ::osgViewer::Viewer();
        viewer->setSceneData(pGeode);
        
        ::osg::ref_ptr<SnapImageDrawCallback> snapImageDrawCallback = new 
SnapImageDrawCallback(); 
        viewer->getCamera()->setFinalDrawCallback 
(snapImageDrawCallback.get()); 
        
        snapImageDrawCallback->setFileName("1.bmp"); 
        snapImageDrawCallback->setSnapImageOnNextFrame(true); 
        
        ::osg::ref_ptr< ::osg::GraphicsContext> pbuffer;
                                
        ::osg::ref_ptr< ::osg::GraphicsContext::Traits> traits = new 
::osg::GraphicsContext::Traits;
        traits->x = 0;
        traits->y = 0;
        traits->width = 640;
        traits->height = 480;
        traits->red = 8;
        traits->green = 8;
        traits->blue = 8;
        traits->alpha = 8;
        traits->windowDecoration = false;
        traits->pbuffer = true;
        traits->doubleBuffer = true;
        traits->sharedContext = 0;

        pbuffer = ::osg::GraphicsContext::createGraphicsContext(traits.get());
        
        if (!pbuffer.valid())
        {
                ::std::cout << "\n\n!!! pbuffer is invalid!\n\n" << std::endl;
                return;
        }
        else
        {
                ::std::cout << "\n\n!!! pbuffer is VALID!\n\n" << std::endl;
        }
        
        viewer->getCamera()->setGraphicsContext(pbuffer.get());
        viewer->getCamera()->setViewport(new osg::Viewport(0,0,640,480));
        GLenum buffer = pbuffer->getTraits()->doubleBuffer ? GL_BACK : GL_FRONT;
        viewer->getCamera()->setDrawBuffer(buffer);
        viewer->getCamera()->setReadBuffer(buffer);
        
viewer->getCamera()->setRenderTargetImplementation(::osg::CameraNode::FRAME_BUFFER_OBJECT);
        
        viewer->frame();

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=33995#33995





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to