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

Reply via email to