我正在尝试使用 16ms 的超时时间来捕获屏幕,并且在全屏4k 60fps下测试捕获时,我得到了 60-65 FPS 视频。在这种情况下,CPU使用率大约为 0-1%。但是,当鼠标光标在屏幕上移动时,FPS和CPU使用率分别提高了 100+帧和 25-30%。因此,存在一个问题:如果将超时设置为16,为什么我的 FPS 会大于70?
如果超时设置为0:使用相同的值捕获 FPS量,但是 CPU使用率保持稳定为。在这种情况下,超时错误的数量会大大增加。这与上一个问题有某种联系吗?
do
{
hr = lDeskDupl->AcquireNextFrame(
TimeoutMS,&lFrameInfo,&lDesktopResource);
if (SUCCEEDED(hr)) {
accumFramesCount += lFrameInfo.accumulatedFrames;
break;
}
if (hr == DXGI_ERROR_INVALID_CALL)
{
lDeskDupl->ReleaseFrame();
}
if (hr == DXGI_ERROR_WAIT_TIMEOUT)
{
timeoutsCount++;
}
}
while (true);