When rendering to a texture, what determines the RenderBuffer (internal)
format? I would have thought it should use the texture's internal format to
define the RenderBuffer format, but I don't see this in the code. However, I do
see this in FrameBufferAttachment::FrameBufferAttachment(Camera::Attachment&
attachment) when given an image pointer attachment:
osg::Image* image = attachment._image.get();
if (image)
{
if (image->s()>0 && image->t()>0)
{
GLenum format = attachment._image->getInternalTextureFormat();
if (format == 0)
format = attachment._internalFormat;
_ximpl = new Pimpl(Pimpl::RENDERBUFFER);
_ximpl->renderbufferTarget = new osg::RenderBuffer(image->s(),
image->t(), format);
}
else
{
osg::notify(osg::WARN)<<"Error:
FrameBufferAttachment::FrameBufferAttachment(Camera::Attachment&) passed an
empty osg::Image, image must be allocated first."<<std::endl;
}
return;
}
Do I have to set the internal format manually by calling the Camera->attach
twice:
camera->attach(osg::Camera::COLOR_BUFFER, texture, 0, 0, false, samples,
colorSamples);
camera->attach(osg::Camera::COLOR_BUFFER, GL_LUMINANCE32F_ARB);
I don't see in the code where the camera ::Attachment._internalFormat is being
initialized when given a texture.
Am I missing something? Is there a better example of this than the
osgprerender.cpp example?
Paul P.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org