示例功能:示例里面有两个模型,一个是牛,另一个是飞机。鼠标右键时牛和飞机都隐藏,鼠标左键双击时牛和飞机都显示,按键盘上面的LEFT键,显示牛,按键盘上面的RIGHT键显示飞机。其中显示与隐藏节点使用的是setNodeMask(bool)。bool的值为0的时候是隐藏,1的时候是显示。

#include<osgDB\ReadFile>
#include<osgViewer\Viewer>
#include<osg\Node> class UseEventHandler :public osgGA::GUIEventHandler
{
public:
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
{
osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);
if (!viewer)return false; switch (ea.getEventType())
{
case osgGA::GUIEventAdapter::KEYDOWN:
{
if (ea.getKey() == 0xFF51)
{
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1);
}
if (ea.getKey() == 0xFF53)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1);
}
break;
}
case osgGA::GUIEventAdapter::PUSH:
if (ea.getButton() == 4)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0);
}
break;
case osgGA::GUIEventAdapter::DOUBLECLICK:
if (ea.getButton() == 1)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1);
}
break;
default:
break;
}
return false;
}
}; void main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> root = new osg::Group();
root->addChild(osgDB::readNodeFile("cow.osg"));
root->addChild(osgDB::readNodeFile("glider.osg"));
viewer.setSceneData(root.get());
viewer.addEventHandler(new UseEventHandler);
viewer.realize();
viewer.run();
}

结果图:

最新文章

  1. maven打包插件:appassembler
  2. 为SubSonic3.0的查询(SubSonic.Query.Select和存储过程)添加更多的执行功能
  3. 清北学堂模拟赛day7 石子合并加强版
  4. install Hadoop
  5. 升级到iOS9之后的相关适配
  6. Parallel的陷阱
  7. python pickle 和 shelve模块
  8. .NET GC Server-Background-GC
  9. Protobuf动态解析那些事儿
  10. kruskal算法-Pascal
  11. Resizable(调整大小)组件
  12. HLS 协议
  13. Centos7新功能
  14. ActiveMQ入门示例
  15. js调用百度地图接口绘制任意多边形并获取每个点的经纬度等
  16. linux $参数
  17. BZOJ4269再见Xor——高斯消元解线性基
  18. https遇到自签名证书/信任证书
  19. javascript 获取多种主流浏览器显示页面高度(转)
  20. LDO选型注意事项

热门文章

  1. Redis集群进阶之路
  2. 全文检索引擎 sphinx-coreseek中文索引
  3. day 20 约束 异常处理 MD5
  4. Manjaro Linux KDE个人的一些安装配置
  5. python应用:selenium之爬取天眼查信息
  6. 虚拟机搭建hadoop的步骤
  7. 网站漏洞检测之WordPress 5.0.0 系统修复方案
  8. golang 兼容不同json结构体解析实践
  9. 网络相关知识点:nginx相关概念
  10. BZOJ2659_算不出的算式_KEY