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