Hi everyone:
Here is My code:
depthBuffer->allocateImage(width, height, 1,GL_DEPTH_COMPONENT,GL_FLOAT);
viewer.getCamera()->setPostDrawCallback( new ScreenShotCallback());
while (!viewer.done())
{
viewer.getCamera()->attach(osg::Camera::DEPTH_BUFFER, depthBuffer);
viewer.frame();
}
and in ScreenShotCallback Operator
void operator() (const osg::Camera &camera) const
{
FILE * fp;
fp = fopen(file_name, "w");
float z ;
char tmp[15];
for(int i = 0;i<width*height;i++)
{
z = float ( (depthBuffer->data())[i*4] );
memset(tmp,'\0',sizeof(tmp));
sprintf(tmp,"%f ",z);
fprintf(fp, "%s", tmp);
if(!(i%width))
fprintf(fp, "\r\n");
}
fclose(fp);
}
But all data is clamp to [0,255] .How can i get real native z-buffer data?
Best regard.
YangXiao
___________________________________________________________
好玩贺卡等你发,邮箱贺卡全新上线!
http://card.mail.cn.yahoo.com/
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org