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