Robert, Ralph,
many thanks!
Now I am taking screenshots correctly.
I also had some problems getting the correct window position - I would like
to comment the solution that I found, so it is
in the same thread as the previous problem.
I am using the following code - with the two methods that I am trying:
class ScreenShotCallback: public osg::Camera::DrawCallback
{
private:
osgViewer::Viewer::Windows _windows;
osg::Image *_image;
public:
ScreenShotCallback(osgViewer::Viewer::Windows windows)
{
_windows = windows;
_image = new osg::Image();
}
~ScreenShotCallback() {};
void operator() (const osg::Camera &camera) const
{
int x, y, width, height;
// FIRST METHOD:
_windows[0]->getWindowRectangle(x, y, width, height);
std::cout << "\n Window: x, y: " << x << ", " << y << "\t width x
height: " << width << " x " << height << std::endl;
_image->readPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE);
osgDB::writeImageFile(*_image, "capture1.bmp");
// SECOND METHOD:
x = (int) camera.getViewport()->x(); y = (int) camera.getViewport
()->y();
width = (int) camera.getViewport()->width(); height = (int)
camera.getViewport()->height();
std::cout << "\n Viewport: x, y: " << x << ", " << y << "\t width x
height: " << width << " x " << height << std::endl;
_image->readPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE);
osgDB::writeImageFile(*_image, "capture2.bmp");
}
};
int main(int argc, char** argv)
{
...
osgViewer::Viewer::Windows windows;
viewer.getWindows(windows);
viewer.getCamera()->setPostDrawCallback( new ScreenShotCallback(windows)
);
viewer.run();
}
There is one funny thing going on here. With
_windows[0]->getWindowRectangle, all values printed in the console are
right,
but in the capture x and y are not correct. However, with
camera.getViewport()->x()...
the x and y values
are always printed as zero, but the capture is correct. I have no idea about
why this is happening, but at the end of the day, camera.getViewport() works
fine! :)
Thanks again,
Edu
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org