Hi, I am trying to do the same. I noticed two methods of Texture2D. texShadowMap->setShadowComparison(true); texShadowMap->setShadowTextureMode(Texture2D::LUMINANCE);
what are these doing? Also, what is to be done to display the depth texture on screen. Thanks Nick http://www.linkedin.com/in/tnick Sent from Ünalan, İstanbul, Turkey On Mon, Jan 11, 2010 at 11:27 PM, Mourad Boufarguine < [email protected]> wrote: > 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 > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

