osgViewer::Viewer的构造函数可以支持ArgumentParser作为参数,主要是配置线程、缓存等一些信息。
然后是osgGA中的几个操作器,操作器主要的几个方法:
handle,操作器也是事件,所有的事件可以重写handle函数进行自己的判断,第一个参数GUIEventAdapter,传递事件的类型等信息,第二个参数可以说传递整个场景,可以作为一个view使用。
getInversMatrix,非常重要,获取场景相对于相机变化的逆矩阵,也就是相机相对于场景变化的矩阵,实现操作视图的功能
home,点击空格回到的位置
handle在每一帧都会被事件更新函数调用,实现场景的更新。
AnimationPathManipulator操作器根据一个path文件可以实现动画,path文件格式:时间、移动x、移动y、移动z、旋转角度、x方向、y方向、z方向
viewer.addEventHandler( new osgViewer::StatsHandler());
viewer.addEventHandler( new osgViewer::WindowSizeHandler() );
viewer.addEventHandler( new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()) );
viewer.addEventHandler( new TexturePoolHandler() );
增加了一些osg自定义的事件处理,事件循环中调用。
接下来,看《最长的一帧》中的一句话:编译加载的数据:有些数据如果提前进行编译可以有效地提升效率,例如为几何体