OpenSceneGraph(OSG)运行程序时按键无响应、按esc不退出程序的解决方法

OpenSceneGraph(OSG)运行程序时按键无响应、按esc不退出程序的解决方法

原因:osg运行程序是全全屏导致输入法无法自动切换到英文输入法
解决方法如下:

一、添加美式键盘
1、打开设置
2、选择语言和时间、选择语言
3、添加语言,选美国English
4、在运行之前把这个美式键盘调出来

二、在运行程序之后、按键之前,按住鼠标左键

这样,程序就可以响应按键事件,按esc也能退出程序了
牛啊牛啊

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在使用OpenSceneGraph(以下简称OSG,当程序退出,需要释放分配的内存,包括osgViewer::Viewer对象和相关的场景图等资源。下面是一个简单的示例代码,演示了如何在程序退出释放OSG相关资源。 ```c++ #include <osgViewer/Viewer> #include <osgDB/ReadFile> int main() { osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; viewer->setSceneData(osgDB::readNodeFile("cow.osg")); // 加载场景图 viewer->realize(); // 初始化视窗 // 运行OSG程序,渲染场景 viewer->run(); // 退出程序前释放分配的内存 viewer->releaseGLObjects(); osg::ref_ptr<osg::Node> scene = viewer->getSceneData(); if (scene.valid()) { scene->releaseGLObjects(); } osg::ref_ptr<osgDB::Options> options = new osgDB::Options; options->setReleaseContextAtFileClose(true); osgDB::Registry::instance()->closeAllLibraries(); return 0; } ``` 在上面的示例代码,首先创建了一个osgViewer::Viewer对象,并加载了一个场景图。然后调用viewer->realize()函数来初始化视窗,并使用viewer->run()函数来运行OSG程序,渲染场景。 在程序退出前,需要释放分配的内存。具体的步骤如下: 1. 调用viewer->releaseGLObjects()函数来释放分配的OpenGL对象。 2. 调用viewer->getSceneData()函数获取场景图的根节点,并调用其releaseGLObjects()函数来释放分配的OpenGL对象。 3. 调用osgDB::Registry::instance()->closeAllLibraries()函数来关闭所有打开的插件库,并释放相关资源。 需要注意的是,如果程序使用了其他OSG相关资源(如纹理、着色器等),也需要在程序退出前对其进行释放。具体的方式可以参考上面的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值