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