Я пытаюсь захватить экран с 16 мс тайм-аута, и я получаю 60-65 FPS , когда захват тестируется на полноэкранном видео 4k 60fps. Загрузка ЦП в этом случае составляет примерно 0-1% . Но когда курсор мыши перемещается по экрану, частота кадров и частота процессора увеличиваются до 100 + кадров и 25-30% соответственно. Итак, возникает вопрос: почему я могу получить FPS больше 70, если тайм-аут установлен на 16?
Если тайм-аут на 0: количество FPS захватываются с тем же значением , но загрузка ЦП остается стабильной на 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);