Windows 10 桌面 Window 管理器交换时间?
Windows 10 Desktop Window Manager swap timing?
我有几个关于 Windows 10 中的桌面 Window 管理器(又名 DWM)的问题:
背景:对于我用C++编写的OpenGL应用程序,我需要精确计时OpenGL中前后缓冲区的交换以及这些命令在OS级别的实现。 (我知道 Windows 10,或者 Windows 一般来说,是一个糟糕的选择,但还有其他限制因素)。
问题 1:我的互联网研究表明 DWM 管理着我无法控制的第三个缓冲区(使可视化成为一个三重缓冲系统),因此会产生不可预测的延迟。调查还表明,这可以通过在全屏模式下打开 OpenGL 上下文来绕过。此信息是否正确?
问题2:这个延迟是由于OS随机指示DWM复制缓冲区造成的吗?
问题3:实际延迟是多长时间,我的调查显示数字在<1ms 到50ms 之间,但没有可靠的来源。
事实上,除了唯一的事实,即延迟的存在之外,我在互联网上找到的任何其他假设都没有可靠的来源。因此,我恳请任何对这个问题有答案的人,如果可能的话,包括对他们声明的引用。
我不知道这是否重要,但我正在通过 GLFW 和 GLEW 使用 OpenGL。
虽然我找不到问题 2 和 3 的答案,但联系 Nvidia 支持人员提供了问题 1 的答案。
Nvidia 声明在全屏上下文中呈现的应用程序无法访问 DWM。它只处理以窗口模式呈现的应用程序。
警告:他们还说这是设计使然。考虑到 Microsoft 试图强制 users/programmers 使用 DWM 这一事实,无法保证此设计决策将保持多长时间不变。
来自 Nvidia 的原始邮件:
[...]
After checking your request with our specialized department, please note that when a game or anything is in Full Screen you cannot access this Windows Feature [annot.: DWM]. This is by design. It needs to be windowed mode if you want to access this feature.
[...]
我有几个关于 Windows 10 中的桌面 Window 管理器(又名 DWM)的问题:
背景:对于我用C++编写的OpenGL应用程序,我需要精确计时OpenGL中前后缓冲区的交换以及这些命令在OS级别的实现。 (我知道 Windows 10,或者 Windows 一般来说,是一个糟糕的选择,但还有其他限制因素)。
问题 1:我的互联网研究表明 DWM 管理着我无法控制的第三个缓冲区(使可视化成为一个三重缓冲系统),因此会产生不可预测的延迟。调查还表明,这可以通过在全屏模式下打开 OpenGL 上下文来绕过。此信息是否正确?
问题2:这个延迟是由于OS随机指示DWM复制缓冲区造成的吗?
问题3:实际延迟是多长时间,我的调查显示数字在<1ms 到50ms 之间,但没有可靠的来源。
事实上,除了唯一的事实,即延迟的存在之外,我在互联网上找到的任何其他假设都没有可靠的来源。因此,我恳请任何对这个问题有答案的人,如果可能的话,包括对他们声明的引用。
我不知道这是否重要,但我正在通过 GLFW 和 GLEW 使用 OpenGL。
虽然我找不到问题 2 和 3 的答案,但联系 Nvidia 支持人员提供了问题 1 的答案。
Nvidia 声明在全屏上下文中呈现的应用程序无法访问 DWM。它只处理以窗口模式呈现的应用程序。
警告:他们还说这是设计使然。考虑到 Microsoft 试图强制 users/programmers 使用 DWM 这一事实,无法保证此设计决策将保持多长时间不变。
来自 Nvidia 的原始邮件:
[...]
After checking your request with our specialized department, please note that when a game or anything is in Full Screen you cannot access this Windows Feature [annot.: DWM]. This is by design. It needs to be windowed mode if you want to access this feature.
[...]