Hi Christian, You simply need to create a geometry and assign the RTT Texture to via a StateSet and then render this as part of the main scene graph. Have a look at the osgprerender or osgdistortion examples.
Robert. On 7 June 2012 20:52, Christian Rumpf <[email protected]> wrote: > Hey! > > I read nearly everything about render to texture techniques and what you can > do with them, but not how to SIMPLY display it. My intention is to pre-render > the scene into a texture and sending this texture into my fragment shader > (GLSL) to simulate blur effects. > > But before I can do this shading stuff I need to display this pre-rendered > scene and I don't know how to do it. Here my code so you can see what I > programmed: > > > Code: > #include <osg/Node> > #include <osg/Texture2D> > #include <osg/Shader> > #include <osgDB/ReadFile> > #include <osgViewer/Viewer> > > #include <iostream> > > osg::Camera* createRTTCamera(int width, int height, osg::Texture2D* texture) > { > texture->setTextureSize(width, height); > texture->setInternalFormat(GL_RGB); > texture->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR); > texture->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR); > > osg::ref_ptr<osg::Camera> rttCamera = new osg::Camera; > > rttCamera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); > rttCamera->setClearColor(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); > rttCamera->setViewport(0, 0, width, height); > rttCamera->setRenderOrder(osg::Camera::PRE_RENDER); > rttCamera->setReferenceFrame(osg::Transform::RELATIVE_RF); > > rttCamera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT); > rttCamera->attach(osg::Camera::COLOR_BUFFER, texture); > > return rttCamera.release(); > } > > int main(int argc, char** argv) > { > osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("cessna.osg"); > > osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D; > osg::ref_ptr<osg::Camera> camera = createRTTCamera(1600, 900, > texture.get()); > camera->addChild(model.get()); > > osg::StateSet* ss = model->getOrCreateStateSet(); > ss->setTextureAttributeAndModes(0, texture.get(), > osg::StateAttribute::ON); > > osg::ref_ptr<osg::Group> root = new osg::Group; > root->addChild(camera.get()); > > osgViewer::Viewer viewer; > viewer.setSceneData(root.get()); > return viewer.run(); > } > > > > > By running this code I get nothing, only if I add this line before my viewer > my plane appears: > > > Code: > root->addChild(model.get()); > > > > > Can someone help me out? > > lg Christian > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=48113#48113 > > > > > > _______________________________________________ > 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

