唐山网站建设托管,wordpress 分类信息插件,搭建网站要哪些知识,百度怎么制作网页前一章节#xff1a;二、OSG学习笔记-入门开发-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145513874
一、
OsgGA: 界面事件处理空间#xff0c;处理操作各种操作器的最大名字空间#xff1b;
GUIEventHandler: ui 事件操作类
注意#xff1a;在启…前一章节二、OSG学习笔记-入门开发-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145513874
一、
OsgGA: 界面事件处理空间处理操作各种操作器的最大名字空间
GUIEventHandler: ui 事件操作类
注意在启用事件类自定义时我的Win10专业版出现一个键盘输入系统兼容的问题
OSG Viewer输入按键无响应
1 问题描述
操作系统Windows 10 专业版
输入法微软拼音输入法
现象在PowerShell执行osgviewer.exe glider.osg后能正常显示图像但输入s显示帧率或f切换全屏或窗口等按键后无响应。
2 解决方案
右键点击任务栏右下角输入法图标点击设置-常规在兼容性一栏中启用使用以前版本的微软拼音输入法。 二、
代码CuiQingCheng/OsgStudy - Gitee.com
1、计时器的用法
osg::Timer
2、自定义ui事件
3、帮助事件
4、路径记录事件器
#includewindows.h
#includeosg/Node
#includeosgViewer/Viewer
#includeosgViewer/ViewerEventHandlers
#includeosgDB/ReadFile
#include osgGA/TrackballManipulator// 事件响应类
class MyPrint :public osgGA::GUIEventHandler
{
public:void getUsage(osg::ApplicationUsage usage) const override {usage.addKeyboardMouseBinding(cc, 11111111);}bool handle(const osgGA::GUIEventAdapter ea, osgGA::GUIActionAdapter aa) override {if (ea.getEventType() osgGA::GUIEventAdapter::KEYDOWN){int itc static_castint(c);int iK ea.getKey();if (ea.getKey() c) {// 这里添加你想要执行的操作例如打印信息std::cout Key c is pressed std::endl;return true; // 表示事件已处理}}return false; // 表示未处理该事件将继续传递给其他处理器}
};int main()
{osg::ref_ptrosgViewer::Viewer viewer new osgViewer::Viewer;viewer-setUpViewInWindow(100, 100, 1500, 1200);osg::ref_ptrosg::Node node osgDB::readNodeFile(glider.osg);// 获取控制器osgGA::CameraManipulator* manipulator viewer-getCameraManipulator();if (!manipulator) {std::cout No manipulator set! std::endl;// 设置默认操作器viewer-setCameraManipulator(new osgGA::TrackballManipulator);}else {std::cout Manipulator: manipulator-className() std::endl;}osg::Timer_t start_time 0;osg::Timer_t end_time 0;osg::Timer* timer new osg::Timer;//得到一个tick值多少second;std::cout timer-getSecondsPerTick() std::endl;start_time timer-tick();std::cout func1: read node file time: timer-time_s() std::endl;end_time timer-tick();std::cout func2: read node file time: timer-delta_s(start_time, end_time) std::endl;// 获取场景中事件数量const osgViewer::View::EventHandlers handlers viewer-getEventHandlers();std::cout Number of default event handlers: handlers.size() std::endl;int i 1;for (osg::ref_ptrosgGA::EventHandler pE:handlers){std::cout Handler i : pE.get()-className() std::endl;i;}// 添加事件viewer-addEventHandler(new MyPrint);viewer-addEventHandler(new osgViewer::HelpHandler);// 路径记录功能,会在软件开发路径下默认存放一个文件 “saved_animation.path”viewer-addEventHandler(new osgViewer::RecordCameraPathHandler);viewer-setSceneData(node.get());viewer-run();return 1;
}
运行起来程序按下键盘小写‘z’开启记录位置然后开始拖动图元再按下键盘大写‘Z’生成如下保存路径的文件 下次启动viewer软件加载模型文件并导入路径文件模型中图元会按照事先保存的路径运动。 后一章节四、OSG学习笔记-基础图元-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514148