HI Viggo,

I'd suggest rather than have a high level loop, you just place the
tests for all levels right in side your "myTestSupportOperationClass",
and then just query this after the realize to see what capabilities
you have.

Robert.

On Fri, Aug 8, 2008 at 11:50 AM, Viggo Løvli <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I need to automatically check the rendering capabilities of the current
> hardware and chose rendering techniques from that. I want to find the best
> practical way to do this.
>
> I have looked into the OSGShaderTerrain example.
> It uses a osg::GraphicsOperation class to do actual capability checking.
>
> My application creates a osgViewer::CompositeViewer instance.
> Basically this is the initialization in pseudocode:
>
>     viewer = new osgViewer::CompositeViewer();
>     view = new osgViewer::View;
>     viewer->addView( view );
>     view->setSceneData( myRootNode );
>     view->setUpViewInWindow( 100, 100, 1024, 768 );
>     viewer->run();
>
> Now say that I have 3 different levels of rendering techniques:
>     2 = Complex
>     1 = Normal
>     0 = Simple
>
> If I shall use the same method as done in the OSGShaderTerrain example, then
> I would write the code like this:
>
> level = 3
> while( level-- )
> {
>     viewer = new osgViewer::CompositeViewer();
>     capabilityChecker = new myTestSupportOperationClass( level );  //
> myTestSupportOperationClass is a specialized version of
> osg::GraphicsOperation.
>     viewer->setRealizeOperation( capabilityChecker );
>     view = new osgViewer::View;
>     viewer->addView( view );
>     view->setSceneData( myRootNode );
>     view->setUpViewInWindow( 100, 100, 1024, 768 );
>     viewer->realize();
>     if( !capabilityChecker->_supported )
>     {
>         ..cleanup so we are ready to initialize again...
>         continue; // Check one lower level...
>     }
>     viewer->run();
>     break; // We did manage to run, so break the loop
> }
>
> I wonder if this is a good way to organize the capability testing?
> Is there other ways I should explore?
>
>
> QITODMWTAM-section (Questions I think OSG developers may want to ask me):
> ------------------------------------------------------------------------------
> Q: What capabilities are you trying to check?
> A:
> I want to check if the current hardware can run shaders.
> I would also check basic stuff like how many texture units I can use.
> I would also check if I can render to an offscreen surface.
> I plan to give each special-effect that I write a capability checking
> function which I should be able to call from my specialization of the
> osg::GraphicsOperation class. Each piece of code I have that require
> checking will then be able to stop the system from using them if the
> capability needs are not met.
>
> Cheers,
> Viggo
>
>
> ________________________________
> Windows Live SkyDrive. På tide å glemme minnepinnen.
> _______________________________________________
> 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