Hi Dominic, AFAIK, the png plugin does not support writing depth image. Try the tiff plugin in svn/trunk ; a recent submission made it write depth images, and it works for me.
Mourad On Mon, Jan 11, 2010 at 4:17 PM, Dominic Stalder <[email protected] > wrote: > Hi there > > I have the following RTT method: > > ref_ptr<Image> image = new Image; > image->allocateImage(osgViewer->width(), osgViewer->height(), 1, > GL_RGBA, GL_UNSIGNED_BYTE); > > // resets the size of the texture > texture->setTextureSize(osgViewer->width(), osgViewer->height()); > > // sets the clear mask the depth buffer > camera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); > > // sets the clear color to white > camera->setClearColor(Vec4(1.0, 1.0, 1.0, 1.0)); > > ...matrices and viewport... > > // sets the reference frame to an absolute coordinate frame > camera->setReferenceFrame(Camera::ABSOLUTE_RF_INHERIT_VIEWPOINT); > > // sets the texture camera to render before rendering to the screen > camera->setRenderOrder(Camera::PRE_RENDER); > > // sets the rendering target of the texture camera to the frame buffer > object (FBO) > camera->setRenderTargetImplementation(Camera::FRAME_BUFFER_OBJECT); > > // attaches the texture to the texture camera (important: samples > mustn't be greater than zero) > // buffer component, texture, level, face, mip map generation, samples, > color samples > camera->attach(Camera::COLOR_BUFFER, image.get(), 0, 0); > > // adds the node to the texture camera (this node will be rendered to > the texture) > camera->addChild(node); > > // adds the texture camera to the root node > root->addChild(camera); > > If I write this image to file, it works great, I have my "balance" in the > middle of the image --> see attachment color_buffer.png. Now I would like to > write the depth buffer to the image (just for debugging, afterward I write > it to the texture), so I change the following lines: > > image->allocateImage(osgViewer->width(), osgViewer->height(), 1, GL_RGBA, > GL_UNSIGNED_BYTE); --> image->allocateImage(osgViewer->width(), > osgViewer->height(), 1, GL_DEPTH_COMPONENT, GL_FLOAT); > > camera->attach(Camera::COLOR_BUFFER, image.get(), 0, 0); --> > camera->attach(Camera::DEPTH_BUFFER, image.get(), 0, 0); > > After that I get the image depth_buffer.png, but this isn't correct, is it? > > The texture looks like this, is it correct? > > // creates the texture for the shadow map > texShadowMap = new Texture2D; > texShadowMap->setInternalFormat(GL_DEPTH_COMPONENT); > texShadowMap->setShadowComparison(true); > texShadowMap->setShadowTextureMode(Texture2D::LUMINANCE); > texShadowMap->setFilter(Texture2D::MIN_FILTER, Texture2D::LINEAR); > texShadowMap->setFilter(Texture2D::MAG_FILTER, Texture2D::LINEAR); > texShadowMap->setWrap(Texture2D::WRAP_S, Texture2D::CLAMP_TO_BORDER); > texShadowMap->setWrap(Texture2D::WRAP_T, Texture2D::CLAMP_TO_BORDER); > texShadowMap->setBorderColor(Vec4(1.0, 1.0, 1.0, 1.0)); > > What am I doing wrong in this function? > > Thanks a lot > Dominic > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

