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

Reply via email to