C++ Windows 10桌面窗口管理器交换时间?

C++ Windows 10桌面窗口管理器交换时间?,c++,windows,opengl,glfw,dwm,C++,Windows,Opengl,Glfw,Dwm,关于Windows 10中的桌面窗口管理器(又名DWM),我有几个问题: 背景:对于一个用C++编写的OpenGL应用程序,我需要精确地处理OpenGL中前后缓冲区的交换,并在OS级上实现这些命令。(我知道Windows 10或Windows一般来说是一个不好的选择,但还有其他限制因素) 问题1:我的互联网研究表明DWM管理着第三个缓冲区(使可视化成为三缓冲系统),我无法控制它,因此造成了不可预测的延迟。调查还表明,以全屏模式打开OpenGL上下文可以绕过这一问题。这个信息正确吗 问题2:这种

关于Windows 10中的桌面窗口管理器(又名DWM),我有几个问题:

背景:对于一个用C++编写的OpenGL应用程序,我需要精确地处理OpenGL中前后缓冲区的交换,并在OS级上实现这些命令。(我知道Windows 10或Windows一般来说是一个不好的选择,但还有其他限制因素)

  • 问题1:我的互联网研究表明DWM管理着第三个缓冲区(使可视化成为三缓冲系统),我无法控制它,因此造成了不可预测的延迟。调查还表明,以全屏模式打开OpenGL上下文可以绕过这一问题。这个信息正确吗

  • 问题2:这种延迟是由操作系统随机指示DWM复制缓冲区造成的吗

  • 问题3:实际延迟时间有多长?我的调查显示,延迟时间在1毫秒到50毫秒之间,但没有可靠的来源

事实上,除了一个事实,仅仅是延迟的存在,我在互联网上找到的任何其他假设都没有可靠的来源。因此,我恳请任何对此问题有答案的人,如果可能的话,提供他们声明的参考


我不知道这是否重要,但我通过GLFW和GLEW使用OpenGL

>P>虽然我无法找到问题2和3的答案,但联系英伟达的支持提供了问题1的答案。 Nvidia声明在全屏上下文中呈现的应用程序无法访问DWM。它只处理以窗口模式呈现的应用程序

警告:他们还说这是故意的。考虑到微软试图强迫用户/程序员使用DWM的事实,无法保证这个设计决策会保持多久不变

来自Nvidia的原始邮件:

[……]

在与我们的专业部门核实您的请求后,请注意,当游戏或任何东西处于全屏状态时,您无法访问此Windows功能[注释:DWM]。这是故意的。如果您想访问此功能,需要将其设置为窗口模式

[……]


<>虽然我无法找到问题2和3的答案,但联系英伟达的支持提供了问题1的答案。 Nvidia声明在全屏上下文中呈现的应用程序无法访问DWM。它只处理以窗口模式呈现的应用程序

警告:他们还说这是故意的。考虑到微软试图强迫用户/程序员使用DWM的事实,无法保证这个设计决策会保持多久不变

来自Nvidia的原始邮件:

[……]

在与我们的专业部门核实您的请求后,请注意,当游戏或任何东西处于全屏状态时,您无法访问此Windows功能[注释:DWM]。这是故意的。如果您想访问此功能,需要将其设置为窗口模式

[……]