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
>  [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

Reply via email to