|
程序是在MFC下做的,根据论坛看到的帖子,写下了如下代码
class LeftCameraCallBack:public osg::Camera:rawCallback
{
public:
LeftCameraCallBack(void){};
~LeftCameraCallBack(void){};
public:
void operator()(osg::RenderInfo &renderInfo)const
{
osg::Image *image = new osg::Image();
int width = 1680,height=1050;//这俩个值,一会解释
image->allocateImage(width/4,height/4,1,GL_RGB,GL_UNSIGNED_BYTE);
image->readPixels(0,0,width/4,height/4,GL_RGB,GL_UNSIGNED_BYTE);
image->setFileName("LeftCamera.bmp");
osgDB::writeImageFile(*image,"LeftCamera.bmp");
}
};
views[2]->getCamera()->setPostDrawCallback(new LeftCameraCallBack());
width = 1680,height=1050;这两个值是经由调试测出的compositeViewer窗口的大小,而readPixels(0,0,width/4,height/4,GL_RGB,GL_UNSIGNED_BYTE)当中
(0,0,width/4,height/4)是该相机的视口。问题就在这里,根据上诉操作我认为截取的图片大小应该就是相机视口的大小啊。可是实际的图片大小,大于相机视口将近2倍。
希望各位前辈能帮忙解答下,不胜感激! |
|