Windows桌面复制API AcquireNextFrame避免DXGI_ERROR_WAIT_TIMEOUT

时间:2019-02-15 18:18:41

标签: c++ windows dxgi desktop-duplication

我现在正在使用桌面复制API来记录我的桌面。我希望它至少记录30FPS。我注意到,如果我将超时时间设置为33(33ms大约等于30FPS),而屏幕上却没有任何反应(甚至很少),AcquireNextFrame通常会返回DXGI_ERROR_WAIT_TIMEOUT。为了避免这种情况,我一直在每30FPS绘制一个像素到屏幕的左下角。像这样:

HDC hdc = GetDC(0);
SetPixel(hdc, 0, height, (light_black) ? 0x2 : 0x4);
light_black = !light_black;
ReleaseDC(0, hdc);

这实际上工作得很好,但是仍然偶尔会返回DXGI_ERROR_WAIT_TIMEOUT,这会损害我的性能。考虑到我对这个问题的解决方案有点棘手,甚至还不太可行,我想弄清楚如何解决这个问题。如何强制AcquireNextFrame以至少30FPS的速率成功返回?

0 个答案:

没有答案