是呀。我在遥感信息工程学院,你在哪个学院?我的QQ:625853834 有时间了,多多交流~😊
张觅

Date: Tue, 9 Dec 2014 08:23:32 +0800
From: [email protected]
To: [email protected]
Subject: Re: [osg-users] reading the color buffer in stereo mode

 thanks for Robert's kind answers.
 Currently, my osg version is 3.3.1, and I  used the QUAD_BUFFER stereo mode.
 Next, I will try Robert's suggestion, using glReadBuffer()  and glReadPixles().
 thanks very much again. @Robert
 
 whu








At 2014-12-08 22:47:13, "c" <[email protected]> wrote:




Hi Whu,

How to capture stereo images will depend upon what type of stereo your 
application is using and which version of the OSG you are using.

The code you have provided might be roughly how you'd approach capturing a quad 
buffer stereo setup.  You'd need to change the Camera::setReadBuffer() call to 
glReadBuffer() call as the Camera::setReadBuffer() method only changes internal 
settings of the Camera, it' doesn't apply anything OpenGL right away - these 
setting is only used when the Camera's subgraph is being rendered.


Robert.



On 8 December 2014 at 12:12, whu <[email protected]> wrote:



Dear all,
I was still trying to fetch the left-eye and right-eye images in the stereo 
mode.
code as follow:

class:  class CaptureDrawCallBack : public osg::Camera::DrawCallback
the key overload function: 

void operator()(osg::RenderInfo &renderInfo) const
    {
    // capture , bool ,when I want to capture the screen,key press event will 
switch it to be true.
     if(capture)
     {
      // osg::ref_ptr<osg::Image> _imageL, _imageR
        _imageL->allocateImage(scwidth,scheight,1,GL_RGBA,GL_UNSIGNED_BYTE);
        _imageR->allocateImage(scwidth,scheight,1,GL_RGBA,GL_UNSIGNED_BYTE);
        renderInfo.getCurrentCamera()->setReadBuffer(GL_BACK_LEFT);
        _imageL->readPixels(0,0,scwidth,scheight,GL_RGBA,GL_UNSIGNED_BYTE);
        osgDB::writeImageFile(*(_imageL.get()),fileNmaeL);
        renderInfo.getCurrentCamera()->setReadBuffer(GL_BACK_RIGHT);
        _imageR->readPixels(0,0,scwidth,scheight,GL_RGBA,GL_UNSIGNED_BYTE);
       osgDB::writeImageFile(*(_imageR.get()),fileNmaeR);
       capture = false;
      }
    }
   
   and in the main viewer's camera:
        viewer->getCamera()->setPostDrawCallback(new CaptureDrawCallBack());
   
   the program runs successfully(thoug no high effect ,just to test the 
function), with a  quadro card supproted, I can see the stero effect.
 
  but when I capture the screen :
   the two images saved by the above operation are the same, not as expected: a 
left-eye iamge, a right-eye image.

  can some one give me some suggestions?

  online waiting.
 
  thanks.

  whu



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





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

Reply via email to