У меня есть два примера захвата экрана, реализованные в двух программах:
1) Использование GDI
HWND wnd = GetDesktopWindow();
HDC hdcScreen = GetDC(wnd);
HDC hdcMemory = CreateCompatibleDC(hdcScreen);
HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen,
width, height);
SelectObject(hdcMemory, hbmScreen);
BitBlt(hdcMemory,
0, 0,
width, height,
hdcScreen,
startX, startY,
SRCCOPY);
2) Использование DirectX
//...Init stuff....
device->GetFrontBufferData(0, surface);
surface->LockRect(&rc, NULL, 0);
CopyMemory(shot, rc.pBits, rc.Pitch * height);
surface->UnlockRect();
a) I протестировал оба образца на старом ноутбуке с win7 и coreduo pro c и получил 1) 1-8 FPS, 2) 15-20 FPS
b) Я тестировал его на настольных win10 и i7-7700 pro c и получаю 1) 15 FPS 2) 30 FPS
c) ПРОБЛЕМА: Я тестировал на новом Macbook Pro с win10 (bootcamp) и Intel Core i7 8. Генерал 4.3 ГГц и получил 1) 30 FPS , 2) 15 FPS
Для меня было ясно, что (2) версия DX должна быть быстрее, чем (1) GDI, но что может быть причиной того, что Top Macbook показывает такие обратные результаты?