|
本帖最后由 hyd66hyd 于 2011-8-15 22:52 编辑
一直在尝试在一个漫游程序中读取深度缓存
可是读出来的值都是1
代码如下:
class PostDrawCallback:public osg::Camera:rawCallback
{
public:
PostDrawCallback(osg::Image* reImage)
{
image=reImage;
}
virtual void operator()(const osg::Camera &camera) const
{
if (flagImage==1)
{
image->readPixels(static_cast<int>(camera.getViewport()->x()),static_cast<int>(camera.getViewport()->x()), static_cast<int>(camera.getViewport()->width()), static_cast<int>(camera.getViewport()->height()), GL_DEPTH_COMPONENT, GL_FLOAT);
}
}
public:
osg::Image* image;
};
int flagImage=1;
osg::Image * depthBuffer = new osg::Image();
……
switch(ea.getEventType())
{
case(osgGA::GUIEventAdapter::FRAME):
{
……
depthBuffer->allocateImage(1280, 1024, 1,GL_DEPTH_COMPONENT,GL_FLOAT);
_viewer->getCamera()->setPostDrawCallback(new PostDrawCallback(depthBuffer));
……
}
default:
return false;
}
}
请教了Array 他说是readPixels的参数问题 后面也没说怎么改
我看不出改怎么修改
求大家能帮帮我 很急
因为假期一直在学校 做完就能回家了 眼看暑假就要没了
如果Array看到 麻烦能告诉我 怎么才能读到正确z值 也求大家帮忙
|
|