I've got a camera set up to perform a pre-render pass, so I can generate a shadow map for the scene of interest. I have verified that the camera is running via the PostDrawCallback, but the resulting image is the same even though the scene is changing between images. The PostDrawCallback merely calls dirty() on the image - this code results in a static image. Anyone have any clues what is wrong with this code?
Thanks in advance, ref_ptr<Camera> m_prerenderCamera; ref_ptr<Image> m_shadowImage; ref_ptr<Texture2D> m_shadowMap; const int TextureSize = 1024; m_prerenderCamera->setRenderTargetImplementation(Camera::FRAME_BUFFER_OBJECT); m_prerenderCamera->setClearColor(Vec4(1.0f, 0.0f, 1.0f, 1.0f)); m_prerenderCamera->setClearMask(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); m_prerenderCamera->setComputeNearFarMode(Camera::DO_NOT_COMPUTE_NEAR_FAR); m_prerenderCamera->setReferenceFrame(Transform::ABSOLUTE_RF); m_prerenderCamera->setProjectionMatrixAsPerspective(90.0, 1024.0/768.0, 1.0, 100.0); m_prerenderCamera->setViewMatrix(Matrix::identity()); m_prerenderCamera->setViewport(0, 0, TextureSize, TextureSize); m_prerenderCamera->setRenderOrder(Camera::PRE_RENDER); { StateSet* ss = m_prerenderCamera->getOrCreateStateSet(); osg::Depth* depth = new osg::Depth; ss->setAttributeAndModes(depth, StateAttribute::ON); } m_shadowImage->allocateImage(TextureSize, TextureSize, 1, GL_DEPTH_COMPONENT, GL_FLOAT); m_prerenderCamera->attach(Camera::DEPTH_BUFFER, m_shadowImage.get()); m_prerenderCamera->addChild(m_maskingScene.get()); m_shadowMap->setImage(m_shadowImage.get()); m_prerenderCamera->setPostDrawCallback(new CameraCallback(m_shadowImage)); m_shadowMap->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_BORDER); m_shadowMap->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_BORDER); m_shadowMap->setWrap(osg::Texture::WRAP_R, osg::Texture::CLAMP_TO_BORDER); { StateSet* ss = m_projectedScene->getOrCreateStateSet(); ss->setTextureAttributeAndModes(m_shadowUnit, m_shadowMap.get(), StateAttrib ss->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); ss->setMode(GL_BLEND, osg::StateAttribute::ON); } _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org