gpt4 book ai didi

c - 在 Aero 窗口中禁用垂直同步

转载 作者:行者123 更新时间:2023-11-30 17:55:30 24 4
gpt4 key购买 nike

我正在开发一个适用于 Windows(XP、Vista、7、8)的窗口(非全屏)OpenGL 应用程序,其中 VSync 和 GPU 帧排队会导致非常明显(且严重)的输入延迟。我使用 wglSwapBufferEXT 来禁用 VSync,并在 SwapBuffers 之后使用 glFinish 来防止帧排队。

问题是,在启用了 Aero 的 Windows 版本上,输入延迟仍然存在。禁用 Aero 可以解决该问题,但我们不想强制用户这样做。有没有办法阻止 Aero 在我们的应用程序上强制垂直同步,或者仅为我们的应用程序禁用 Aero?

最佳答案

Aero 是一个窗口合成系统。合成器本质上会引入渲染延迟,甚至可能长达 2 个帧周期。克服这个问题的唯一方法是禁用合成器。

<小时/>

大约两年前,我确实为基于 X11 Composite 的系统概述了一个同步方案,其中每个程序都会提供有关其渲染时间的“单圈时间”。基本上你不能让你的延迟比渲染帧所需的时间短。但是,如果您设法尽可能长时间地延迟渲染帧的开始,将用户输入集成到渲染的最开始,您将获得尽可能短的延迟。

这个想法是让合成器收集计时统计信息,合成窗口需要多长时间以及每个程序渲染一帧需要多长时间。然后合成器会给每个程序一个“立即开始渲染”信号,以便渲染能够及时完成,以便在垂直同步之前进行合成。

不过到目前为止,我还没有实现这一点。

关于c - 在 Aero 窗口中禁用垂直同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com