Hi Robert,

I just tried the uniform setting for the camera and it worked quite nice.
But I'm not able to use a callback to do the updating stuff :-(.

I tried to install this callback:


Code:

struct ViewportCallback : public osg::Uniform::Callback
{
    ViewportCallback( osg::Camera* camera )
                    : _camera( camera )
    {
        std::cout << "ViewportCallback::ViewportCallback()" << std::endl;
    }

    virtual void operator()( osg::Uniform* uniform, osg::NodeVisitor* /*nv*/)
    {
        std::cout << "ViewportCallback::operator()" << std::endl;
        osg::Viewport * vp( _camera->getViewport() );
        uniform->set( osg::Vec4( vp->x(), vp->y(), vp->width(), vp->height() ) 
);
    }

    osg::Camera* _camera;
};




and set it via


Code:

    osg::Viewport * vp( viewer.getCamera()->getViewport() );
    osg::Uniform * viewportUniform = new osg::Uniform( "viewport", osg::Vec4( 
vp->x(), vp->y(), vp->width(), vp->height() ) );
    viewportUniform->setUpdateCallback( new ViewportCallback( 
viewer.getCamera() ) );
    viewer.getCamera()->getOrCreateStateSet()->addUniform( viewportUniform );




But I don't get any output from operator() nor do I get an updated viewport 
value in my shader.

What's wrong with this?


Thank you!

Cheers,
Christoph

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=73632#73632





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to