|
看如下代码,是重载的相机的PostDrawCallback的核心代码:
virtual void operator()(const osg::Camera &camera) const
{
const osg::Viewport *pViewport = camera.getViewport();
osg::ref_ptr<osg::Image> pImage = new osg::Image;
pImage->readPixels(pViewport->x(), pViewport->y(), pViewport->width(), pViewport->height(), GL_RGBA, GL_UNSIGNED_BYTE);
osgDB::writeImageFile(*pImage, "d:\\out.bmp");
osgDB::writeImageFile(*pImage, "d:\\out.jpg");
const_cast<osg::Camera &>(camera).setPostDrawCallback(NULL);
}
其实就是截屏,将截屏的图片保存到磁盘上。
上面的代码分别保存了bmp和jpg两种格式。bmp文件保存一切正常,jpg保存之后,图像变成乱糟糟、灰蒙蒙的。
大家有什么办法和意见? |
|