Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最小化DirectX/OpenGL应用程序中的触摸延迟_Opengl_Windows Runtime_Touch_Directx - Fatal编程技术网

最小化DirectX/OpenGL应用程序中的触摸延迟

最小化DirectX/OpenGL应用程序中的触摸延迟,opengl,windows-runtime,touch,directx,Opengl,Windows Runtime,Touch,Directx,我正在开发一些触摸交互的应用程序,这些应用程序可能通过OpenGL在ANGLE上进行渲染,因此是DirectX。理想情况下,我希望接近即时的触摸响应,这被证明是相当具有挑战性的。我在WebGL中实现了一系列不同的触摸界面,然后在Python中使用标准OpenGL和GLW,然后在Visual C++和角度中使用普通的WINRT应用程序,没有XAML,但我永远无法接近在Windows启动屏幕上滚动的响应性。 在做了一些研究之后,开始屏幕似乎正在使用DirectManipulation库。显然,这会接

我正在开发一些触摸交互的应用程序,这些应用程序可能通过OpenGL在ANGLE上进行渲染,因此是DirectX。理想情况下,我希望接近即时的触摸响应,这被证明是相当具有挑战性的。我在WebGL中实现了一系列不同的触摸界面,然后在Python中使用标准OpenGL和GLW,然后在Visual C++和角度中使用普通的WINRT应用程序,没有XAML,但我永远无法接近在Windows启动屏幕上滚动的响应性。 在做了一些研究之后,开始屏幕似乎正在使用DirectManipulation库。显然,这会接管触摸输入的控制,然后图形转换在单独的线程中处理,并使用窗口合成器本身而不是应用程序进行渲染。我通过下载DirectManipulation示例验证了这一点,它们确实表现出与开始屏幕相同的令人印象深刻的响应性

我运行了一些测试,其中我以慢动作记录了一次触地,然后拖动DirectManipulation示例和我的ANGLE实现,你可以看到平移发生在DirectManipulation示例中我的手指移动大约70毫秒后,以及ANGLE实现中我的手指移动大约130毫秒后,这是最快的

在我看来,这可能是由触摸输入延迟和屏幕合成时的额外缓冲/闪烁等因素共同造成的。ANGLE实现似乎使用了最佳实践,即使用交换链中的翻转模式,全屏以本机分辨率显示,我正在运行一个难以置信的基本应用程序,基本上是一个用手指移动的正方形。这将导致触摸事件传递缓慢。我正在使用标准的WM_指针事件,并且我已经禁用了窗口上的触摸反馈,所以我有点不知道如何从中挤出更多的响应

DirectManipulation有什么神奇之处使触摸事件的延迟响应时间如此之低?这是我可以从用户空间访问的东西,还是响应是合成器中高优先级调度的结果