From Wojciech Lewandowski, VirtualProgram example that illustrates how one can create a custom system for composing shaders within the scene graph.
This commit is contained in:
41
examples/osgvirtualprogram/osgvirtualprogram.cpp
Normal file
41
examples/osgvirtualprogram/osgvirtualprogram.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
#include <iostream>
|
||||
#include <osg/Geode>
|
||||
#include <osg/TexGen>
|
||||
#include <osg/Texture2D>
|
||||
#include <osg/MatrixTransform>
|
||||
#include <osgDB/ReadFile>
|
||||
#include <osgViewer/Viewer>
|
||||
|
||||
extern osg::Node * CreateSimpleHierarchy( const char * file );
|
||||
extern osg::Node * CreateAdvancedHierarchy( const char * file );
|
||||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
// construct the viewer.
|
||||
osg::ArgumentParser arguments( &argc, argv );
|
||||
osgViewer::Viewer viewer( arguments );
|
||||
|
||||
std::string filename = "cow.osg";
|
||||
bool useAdvancedTechnique = arguments.read("-a") || arguments.read("--advanced") ;
|
||||
|
||||
if (arguments.argc()>1)
|
||||
{
|
||||
if (!arguments.isOption(1)) filename = arguments[1];
|
||||
}
|
||||
|
||||
// osg::Node * node = CreateSimpleHierarchy( file );
|
||||
osg::Node * node = useAdvancedTechnique ?
|
||||
CreateAdvancedHierarchy( filename.c_str() ) :
|
||||
CreateSimpleHierarchy( filename.c_str() );
|
||||
|
||||
if ( !node ) {
|
||||
osg::notify( osg::NOTICE ) << "Error, cannot read " << filename << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
viewer.setSceneData( node );
|
||||
viewer.realize( );
|
||||
viewer.run();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user