Hi everybody.
I have some performance problems with rendering to texture.
I am doing some interlacing for an autostereoscopic display. Therefor I need 5
different views on the scene, which I render into textures I later use as input
for the interlacing API.
But doing the RTT slows down my application significantly (even in
Release-mode).
I first thought it would be the interlacer that takes that much time but when I
disabled all interlacing and everything that updates the cameras after the
master camera was moved it didn't really change.
Even now, when everything I do is displaying the picture of the master camera
and additionally rendering to five textures, it runs very halting.
I define 5 target textures and 5 rtt-cameras via
// Configure source textures for the interlacer
_interlacer->resetIterator();
for(int i = 0; i < _interlacer->getNumberOfTextures(); i++){
osg::ref_ptr<osg::Texture2D> renderTexture =
_interlacer->getIteratorTexture();
renderTexture->setTextureSize(_interlacer->getResultTexture()->getTextureWidth(),
_interlacer->getResultTexture()->getTextureHeight());
renderTexture->setInternalFormat(GL_RGBA);
renderTexture->setFilter(osg::Texture2D::MIN_FILTER,
osg::Texture2D::LINEAR);
renderTexture->setFilter(osg::Texture2D::MAG_FILTER,
osg::Texture2D::LINEAR);
_interlacer->incIterator();
}
// Configure cameras of the camera model
_cameras->resetIterator();
_interlacer->resetIterator();
for(int i = 0; i < _cameras->getNumberOfCameras(); i++){
osg::ref_ptr<osg::Camera> textureCamera =
_cameras->getIteratorCamera();
textureCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
textureCamera->setClearMask(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT);
textureCamera->setViewport(0,0, winWidth, winHeight);
textureCamera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);
textureCamera->setRenderOrder(osg::Camera::PRE_RENDER);
textureCamera->setGraphicsContext(_billInterface->getGraphicsContext());
textureCamera->setAllowEventFocus(false);
textureCamera->addChild(_billInterface->getScene());
textureCamera->attach(osg::Camera::COLOR_BUFFER,
_interlacer->getIteratorTexture().get());
_cameras->incIterator();
_interlacer->incIterator();
}
The five RTT-cameras are children of a group node, which I add to the root node
of my scene graph.
Is there a way to speed up the rendering somehow? I could make the resolution
of the textures smaller (currently it's 1280x1024) but this would decrease the
quality of the final image and I would have to scale the textures before
interlacing what probably also takes some time.
Thanks for any hints,
Steffen
________________________________________________________________________
Schon gehört? Bei WEB.DE gibt' s viele kostenlose Spiele:
http://games.entertainment.web.de/de/entertainment/games/free/index.html
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org