SC_MONITORPOWER混乱了vsync

时间:2014-06-19 20:56:12

标签: windows winapi opengl nvidia energy

我有一个监视系统服务,监视OpenGL应用程序崩溃,死机,CPU / GPU过热,计划开/关时间等。当应用程序没有运行时,由于这是一个自助服务终端式部署,我致电BlockInput()并使用PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2)关闭显示屏。当受监视的应用程序再次运行时,显示屏将取消暂停PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1)

嗯,事实证明,如果在低功耗模式下启动OpenGL应用程序,当显示器出现时,vsync在应用程序中不起作用,无论图形驱动程序设置和调用{{ 1}}。如果在启动应用程序之前取消暂停显示(有一些延迟以给它实际上电的时间),vsync工作正常。这里的解决方法是什么?我需要将显示屏消隐,以便商店中的随机人员在应用程序启动时看不到桌面,但我还需要vsync,因为我们认真对待电力有限并且它产生了巨大的差异(运行顶部 - 结束NVIDIA卡的大量吸取力。)

vsync信号来自显卡,而不是显示器,所以这没有任何意义。即使显卡在低功耗显示模式下没有发出vsync信号,为什么当wglSwapIntervalEXT()被发送到不挂起状态时,OpenGL会在信号重新出现时锁定信号?我真的需要一个解决方法,因为我怀疑微软和/或NVIDIA会很快解决这个问题,如果他们甚至意识到这一点(而且我会愚弄这个差事)试图联系其中任何一个 - 我只是在一个不知名的地方的一些可怜的开发者。)

0 个答案:

没有答案