查看: 1269|回复: 3

【求教】关于键盘控制雾参数的问题

[复制链接]

该用户从未签到

发表于 2012-4-16 11:57:48 | 显示全部楼层 |阅读模式

请问,下OSG里面如何用键盘来控制雾的颜色、浓度、范围之类的。。。

fog->setEventCallback() 。。这个函数的参数貌似不是osgGA::GUIEventHandler...

搞了半天也搞没懂该如何响应键盘来控制雾的参数。。。



我在root的状态里面也没有找到可以用键盘控制的方法。。

osg::StateSet *stateset = root->getOrCreateStateSet();
stateset->setAttributeAndModes(createFog(), osg::StateAttribute::ON);
stateset->setEventCallback(new CMyFogHandler);    //这个参数类型是osg::StateSet::Callback,不是GUIEventHandler...


呃,除了GUIEventHandler里面有这个方法:virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa, osg::Object *object, osg::NodeVisitor *nv)可以用来与键盘交互。。其他的我确实不知道了。。


所以,想请教各位前辈,我该如何做,才能用键盘自由控制雾的各种参数呢。。


再此拜谢了~~~~

该用户从未签到

发表于 2012-4-17 10:22:16 | 显示全部楼层
自己派生一个GUIEventHandler就可以了

该用户从未签到

 楼主| 发表于 2012-4-17 11:39:57 | 显示全部楼层
array 发表于 2012-4-17 10:22
自己派生一个GUIEventHandler就可以了

您好,不好意思。。没懂您的意思。。

class CMyFogHandler: public osgGA::GUIEventHandler, public osg::StateSet::Callback
{};


osg::StateSet *stateset = root->getOrCreateStateSet();
stateset->setAttributeAndModes(createFog(), osg::StateAttribute::ON);
stateset->setEventCallback(new CMyFogHandler);


是上面这样子吗?。。编译不过,囧。。是不是我有什么地方错了。。还请指教~~拜谢

如果只是派生 class CMyFogHandler: public osgGA::GUIEventHandler {};。。这种明显类型不符合。。


还望众大神指教~~~谢谢~~


该用户从未签到

发表于 2012-4-18 13:24:32 | 显示全部楼层
如果只是派生 class CMyFogHandler: public osgGA::GUIEventHandler {};。。这种明显类型不符合。
请解释您说的意思,您不知道如何使用viewer.addEventHandler()么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表