我正在尝试以16 毫秒的超时时间捕获屏幕,当在全屏 4k 60fps 视频上测试捕获时,我得到了60-65 FPS 。在这种情况下,CPU 使用率约为0-1%。但是当鼠标光标在屏幕上移动时,FPS 和 CPU 使用率分别上升了100+ 帧和25-30%。所以,有一个问题:如果超时设置为 16,为什么我可以得到大于 70 的FPS ?
如果超时设置为 0:捕获的 FPS 数量相同,但CPU 使用率保持稳定在20-30%,即使屏幕上有静态图像。在这种情况下,超时错误的数量显着增加。这是否与上一个问题有关?
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);