I don't fully understand the purpose of the code. What operation are you
trying to carry out with the textures and how are you using/displaying
the result?
Nevertheless, I see one serious mistake in your code, baseTex is bound
as an input texture in texQuad1 and it's also the render target of the
FBO. Probably that's the reason for which you're seeing strange results
(no increment, or "infinite mirror artifacts").
Also I don't see to which node are you attaching the stateSet, did you
forget to paste the code in your mail?
Juan
My blending version doesn't work.
Parts of the code:
// 1. create RTT-Texture (Rendertarget)
ref_ptr<Texture2D> baseTex = createRenderTexture(width,height);
// 2. Blend Texture
ref_ptr<Texture2D> blendTex = new Texture2D;
blendTex->setImage(osgDB::readImageFile(argv[2]));
// 3. Quads
ref_ptr< TexturedQuad> texQuad1 = new TexturedQuad(baseTex.get());
ref_ptr< TexturedQuad> texQuad2 = new TexturedQuad(blendTex.get());
// 4. Stack (Quad stack)
ref_ptr<Group> stack = new Group;
ref_ptr<MatrixTransform> mt1 = new MatrixTransform;
mt1->setMatrix(Matrix::translate(0,0,-1));
mt1->addChild(texQuad1);
stack->addChild(mt1);
ref_ptr<MatrixTransform> mt2 = new MatrixTransform;
mt2->setMatrix(Matrix::translate(0,0,0));
mt2->addChild(texQuad2);
stack->addChild(mt2);
// 5. BlendEquation
BlendEquation* blendEquation = new BlendEquation(BlendEquation::FUNC_ADD);
blendEquation->setDataVariance(Object::DYNAMIC);
// 6. BlendFunc
ref_ptr<BlendFunc> blendFunc = new BlendFunc();
blendFunc->setFunction(BlendFunc::ONE,BlendFunc::DST_COLOR );
// 7. StateSet
StateSet* stateset = new StateSet;
stateset->setDataVariance(Object::DYNAMIC);
stateset->setAttributeAndModes(blendEquation,StateAttribute::OVERRIDE|StateAttribute::ON);
stateset->setAttributeAndModes(blendFunc, StateAttribute::ON);
stateset->setRenderingHint(StateSet::TRANSPARENT_BIN);
stateset->setMode(GL_BLEND, StateAttribute::ON);
// 8. RTT Camera
osg::Camera* rtt_cam = new osg::Camera;
rtt_cam->setClearColor(osg::Vec4(0,0,0,0));
//rtt_cam->setClearMask( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
rtt_cam->setViewport(0,0,width,height);
rtt_cam->setRenderOrder(osg::Camera::PRE_RENDER, 0);
rtt_cam->setRenderTargetImplementation( osg::Camera::FRAME_BUFFER );
rtt_cam->attach(osg::Camera::COLOR_BUFFER0, baseTex, 0, 0);
rtt_cam->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
rtt_cam->setProjectionMatrixAsOrtho2D(0.0,1.0,0.0,1.0);
rtt_cam->setViewMatrix(osg::Matrix::identity());
rtt_cam->addChild(stack);
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org