0

我现在正在使用桌面复制 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 的速率成功返回?

4

0 回答 0