Webgl 鼠标事件滞后于requestAnimationFrame

Webgl 鼠标事件滞后于requestAnimationFrame,webgl,mouseevent,delay,requestanimationframe,debounce,Webgl,Mouseevent,Delay,Requestanimationframe,Debounce,我正在Chrome web浏览器中运行实时WebGL动画。我正在使用requestAnimationFrame,它试图以监视器的vsync速率(60Hz)触发帧绘制。然而,在一些低功耗机器(英特尔图形笔记本电脑)上,webGL渲染无法以其管理的约20 fps的帧速率运行 帧速率为20fps就可以了——除了在这种情况下,我的mouseEvents似乎严重延迟/滞后。例如,我在mouseEvent处理程序中将“mouse”打印到控制台上,在我点击笔记本电脑的触摸板按钮0.5秒后,它就会出现。这对实时

我正在Chrome web浏览器中运行实时WebGL动画。我正在使用requestAnimationFrame,它试图以监视器的vsync速率(60Hz)触发帧绘制。然而,在一些低功耗机器(英特尔图形笔记本电脑)上,webGL渲染无法以其管理的约20 fps的帧速率运行

帧速率为20fps就可以了——除了在这种情况下,我的mouseEvents似乎严重延迟/滞后。例如,我在mouseEvent处理程序中将“mouse”打印到控制台上,在我点击笔记本电脑的触摸板按钮0.5秒后,它就会出现。这对实时应用程序来说是一个严重的延迟,并导致我的3D场景落后于鼠标移动

到目前为止,我找到的唯一解决这个延迟的方法是使用“去盎司”,即从50-70毫秒的定时回调调用下一个RequestAnimationFrame。这种后退消除了正在处理的鼠标事件的延迟,但显然会降低fps。(例如,70毫秒的计时器将fps从20降低到10,这是不好的,较小的延迟不能解决滞后问题)

我觉得一定有更好的方法来管理每帧同步。我的工作原理是RequestAnimationFrames在我的鼠标事件之前排队,但是我不知道如何解决这个问题。我知道Chrome会将webGL绘图传递给另一个进程,我曾尝试使用gl.finish()等待绘图完成,但这似乎没有任何影响


非常感谢您的帮助/建议

您能每隔一段时间画一次英国皇家空军吗?嗨,格曼,谢谢您的回复。是的,那当然有可能。我想这会使帧率减半,对吗?我会试试看它的表现。是否有什么能让这项工作变得更好,而不仅仅是使用超时来延迟下一个rAF(我目前的解决方案)?