系统事件回调

#include <Windows.h>
#include <osg\Node>
#include <osg\Group>
#include <osg\Geometry>

#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>

#include <osgDB/ReadFile>

#include <osgGA/StateSetManipulator>

int main()
{
	osgViewer::Viewer viewer;

	osg::ref_ptr<osg::Group> group = new osg::Group();
	group->addChild(osgDB::readNodeFile("cow.osg"));
	viewer.setSceneData(group);

	//h 帮助
	viewer.addEventHandler(new osgViewer::HelpHandler());

	//s 切换状态
	//S 输出状态至控制台
	viewer.addEventHandler(new osgViewer::StatsHandler());

	// f 开关全屏
	// < 减少屏幕分辨率
	// > 增加屏幕分辨率
	viewer.addEventHandler(new osgViewer::WindowSizeHandler());
	
	// w 切换面线点模式
	// l 开关照明
	// b 开关剔除模式
	// t 开关纹理
	viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));

	// c 截屏
	// C 停止
	viewer.addEventHandler(new osgViewer::ScreenCaptureHandler());

	// z 录像
	// Z 回放
	viewer.addEventHandler(new osgViewer::RecordCameraPathHandler());

	// * 增加LOD
	// / 减少LOD
	viewer.addEventHandler(new osgViewer::LODScaleHandler());

	// m 切换线程模式
	// e 切换帧屏障末端的位置
	viewer.addEventHandler(new osgViewer::ThreadingHandler());

	viewer.setUpViewInWindow(100, 100, 500, 400);

	viewer.run();
}

posted @ 2021-08-24 17:33  暹罗吹雪  阅读(116)  评论(0编辑  收藏  举报