#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void write_usage(std::ostream& out,const std::string& name) { out << std::endl; out <<"usage:"<< std::endl; out <<" "<drawImmediateMode(state); std::cout<<"draw call back - post drawImmediateMode"<evaluateLODChild"<evaluateLODChild(eye_local,bias); std::cout<<"evaluateLODChild callback - post lod->evaluateLODChild"<computeLocalToWorldMatrix"<computeLocalToWorldMatrix(matrix,nv); std::cout<<"computeLocalToWorldMatrix - post transform->computeLocalToWorldMatrix"<computeWorldToLocalMatrix"<computeWorldToLocalMatrix(matrix,nv); std::cout<<"computeWorldToLocalMatrix - post transform->computeWorldToLocalMatrix"<computeMatrix"<computeMatrix(modelview,eye_local,pos_local); std::cout<<"ComputeBillboardCallback - post billboard->computeMatrix"<setCullCallback(new DrawableCullCallback()); geode.getDrawable(i)->setDrawCallback(new DrawableCallback()); } } virtual void apply(osg::Billboard& node) { node.setComputeBillboardCallback(new BillboardCallback()); apply((osg::Geode&)node); } virtual void apply(osg::Transform& node) { node.setComputeTransformCallback(new TransformCallback()); apply((osg::Node&)node); } virtual void apply(osg::LOD& node) { node.setEvaluateLODCallback(new LODCallback()); apply((osg::Node&)node); } }; int main( int argc, char **argv ) { // initialize the GLUT glutInit( &argc, argv ); if (argc<2) { write_usage(std::cout,argv[0]); return 0; } // create the commandline args. std::vector commandLine; for(int i=1;iaccept(icv); // add a viewport to the viewer and attach the scene graph. viewer.addViewport( rootnode ); // register trackball, flight and drive. viewer.registerCameraManipulator(new osgUtil::TrackballManipulator); viewer.registerCameraManipulator(new osgUtil::FlightManipulator); viewer.registerCameraManipulator(new osgUtil::DriveManipulator); // open the viewer window. viewer.open(); // fire up the event loop. viewer.run(); return 0; }