OSG 自带事件响应

       osgGA::StateSetManipulator:该事件响应类的功能是对渲染状态进行控制,openGL的渲染管线使用了状态机的机制,此事件响应类对状态进行控制体现在当用户按w键时,可在体线点三种模式下进行切换。按1,照明与非照明切换;b是否开启背面剔除模式切换;t在是否开启纹理的情况下切换。

       osgViewer::ThreadingHandler:该事件响应的功能是改变线程模式,也可以改变线程同步点的位置。按m键对线程模式切换;e键对同步点位置进行切换。

                             WindowSizeHandler:对窗口的大小和分辨率进行改变,f键全屏;shift+<或者>对窗口分辨率进行调整。

                             HelpHandler:h键显示帮助信息。从osg::ArgumentParser类传入,可继承该类自定义帮助信息。

                             RecordCameraPathHandler:对当前Camera所经过的路径进行记录,实现录像与回放功能,z启动记录;拖动窗口按大写Z,回放。改变环境变量OSG_RECORD_CAMERA_PATH_FPS可以改变帧速。默认25。

                             LODScaleHandler:通过*与/热键(+sgift?)改变当前渲染的LOD级别。

                             ScreenCaptureHandler:输出当前屏幕的截屏信息到当前文件夹,c键截屏,大写C停止。生成screen_shot_*_X.jpg.


#include <Windows.h>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgViewer/ViewerEventHandlers>
#include <osgGA/StateSetManipulator>


int main(int argc,char** argv)
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
osg::ArgumentParser arguments(&argc,argv);   //帮助信息事件
arguments.getApplicationUsage()->setApplicationName(arguments.getApplicationName());
arguments.getApplicationUsage()->setDescription("Help Information");


osg::ref_ptr<osg::Node> glider = osgDB::readNodeFile("glider.osg");       //文件在当前工程目录下即和debug文件一个目录


viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet()));  //渲染状态事件
viewer->addEventHandler(new  osgViewer::ThreadingHandler);
viewer->addEventHandler(new  osgViewer::WindowSizeHandler);
viewer->addEventHandler(new  osgViewer::StatsHandler);
viewer->addEventHandler(new  osgViewer::HelpHandler(arguments.getApplicationUsage()));
viewer->addEventHandler(new  osgViewer::RecordCameraPathHandler);
viewer->addEventHandler(new  osgViewer::LODScaleHandler);
viewer->addEventHandler(new  osgViewer::ScreenCaptureHandler);


viewer->setSceneData(glider);
return viewer->run();
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值