查看: 3149|回复: 12

关于OSG3中多点触控框架问题

[复制链接]

该用户从未签到

发表于 2012-11-30 08:58:17 | 显示全部楼层 |阅读模式
在OSG3中已嵌入了对多点触控的支持,其中密切相关的类有GUIEventAdapter、EventQueue和MultiTouchTrackbalManipulator。请问做过在win7平台上做过多点触控开发的先知,在GraphicsWindowWin32.cpp中看不到类似于WM_TOUCH的消息处理,那在osg中是如何多点触控事件和数据是如何处理的?

该用户从未签到

发表于 2012-11-30 09:30:32 | 显示全部楼层
好像只添加了接口没有实现吧。

该用户从未签到

 楼主| 发表于 2012-11-30 09:57:15 | 显示全部楼层
osg3.01中的osgmultitouch例子程序在win7中支持单指旋转和两指缩放。

该用户从未签到

发表于 2012-11-30 10:24:16 | 显示全部楼层
handleNativeWindowingEvent 中有WM_TOUCH 消息处理

该用户从未签到

发表于 2012-11-30 10:47:13 | 显示全部楼层
当然有实现,处理的是WM_TOUCH

该用户从未签到

 楼主| 发表于 2012-11-30 10:51:20 | 显示全部楼层
在osg3.1.1版中有对WM_TOUCH 消息处理,谢谢王锐、liuzhiyu123。

该用户从未签到

 楼主| 发表于 2012-12-3 16:20:21 | 显示全部楼层
请问在osgmultitouch例子中未看见类似于RegisterTouchWindow这样的窗口注册函数的使用,它是如何实现多点触控的?

该用户从未签到

发表于 2012-12-3 16:54:36 | 显示全部楼层
  1. Win32WindowingSystem::Win32WindowingSystem()
  2. : _windowClassesRegistered(false)
  3. {
  4.   // Detect presence of runtime support for multitouch
  5.     HMODULE hModule = LoadLibrary("user32");
  6.     if (hModule)
  7.     {
  8.         registerTouchWindowFunc = (RegisterTouchWindowFunc *) GetProcAddress( hModule, "RegisterTouchWindow");
  9.         closeTouchInputHandleFunc = (CloseTouchInputHandleFunc *) GetProcAddress( hModule, "CloseTouchInputHandle");
  10.         getTouchInputInfoFunc = (GetTouchInputInfoFunc *)  GetProcAddress( hModule, "GetTouchInputInfo");

  11.         if (!(registerTouchWindowFunc && closeTouchInputHandleFunc && getTouchInputInfoFunc))
  12.         {
  13.             registerTouchWindowFunc = NULL;
  14.             closeTouchInputHandleFunc = NULL;
  15.             getTouchInputInfoFunc = NULL;
  16.             FreeLibrary( hModule);
  17.         }
  18.     }
  19. }
复制代码

该用户从未签到

 楼主| 发表于 2012-12-3 17:24:46 | 显示全部楼层
以上代码只是实现了将registerTouchWindowFunc指向其实现的DLL地址的功能。请问在那段程序中调用registerTouchWindowFunc来进行多点触控窗口的注册?

该用户从未签到

发表于 2012-12-4 08:01:38 | 显示全部楼层
??

该用户从未签到

 楼主| 发表于 2012-12-4 08:44:34 | 显示全部楼层
我的意思是,在利用多点触控功能前,必须先用registerTouchWindowFunc进行多点触控窗口的注册,这个注册过程是需要自己另外编代码进行注册呢,或者在类似于MuceultiTouchTrackbalManipulator这类OSG附带的类中已经实现了注册?若是后者,在哪段代码中可以看到这一注册过程?

该用户从未签到

发表于 2012-12-5 14:12:59 | 显示全部楼层
就在GraphicsWindowWin32.cpp里面注册的,您不用自己再注册了

该用户从未签到

 楼主| 发表于 2015-10-21 09:39:39 | 显示全部楼层
截止到2015年OSG对于三维空间中多点触控,除支持回到家位置、缩放和旋转外,有何新的功能?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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