I actually managed to get this to work, luckily. I'm not entirely certain what fixed it - I know the final error was having removed the line setting the ABSOLUTE_RF.

Thanks,


Robert Osfield wrote:
Hi Jason,

On a quick pass I can't spot why the image isn't getting updated.  The
osgprerender example has usage of
a colour buffer being grabbed once per frame and this certainly works try:

  osgprerender cow.osg --image

Perhaps this example can help you.

Robert.

On Mon, Apr 28, 2008 at 8:06 PM, Jason Ziglar <[EMAIL PROTECTED]> wrote:
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

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to