Я хочу написати програму скріншоу для платформи Windows, але не знаю, як захопити екран. Єдиний метод, про який я знаю, - це використовувати GDI, але мені цікаво, чи існують інші способи зробити це, і, якщо вони є, які мають найменші витрати? Швидкість - пріоритет.
Програма екранізації буде для запису ігрових кадрів, хоча, якщо це не звузить варіанти, я все ще відкритий для будь-яких інших пропозицій, які випадають з цієї сфери. Зрештою, знання не погані.
Редагувати : Я натрапив на цю статтю: Різні методи зйомки екрана . Це познайомило мене зі способом роботи з Windows Media API та з методом DirectX. У Висновку зазначається, що відключення апаратного прискорення може різко покращити продуктивність програми захоплення. Мені цікаво, чому це так. Чи міг би хтось заповнити пропущені бланки для мене?
Редагувати : я читав, що програми скрін-шоу на зразок Camtasia використовують власний драйвер захоплення. Чи може хтось дати мені поглиблене пояснення того, як це працює, і чому це швидше? Можливо, мені також потрібні вказівки щодо впровадження чогось подібного, але я впевнений, що все-таки є наявна документація.
Також я тепер знаю, як FRAPS записує екран. Він підключає графічний API, що лежить в основі, щоб читати із зворотного буфера. Як я розумію, це швидше, ніж читання з фронтального буфера, адже ви читаєте з системної ОЗУ, а не з відео ОЗУ. Ви можете прочитати статтю тут .
MovePlayerLeft()
. А також ви записуєте час і тривалість натискання клавіш та іншого введення. Потім, перебуваючи в режимі відтворення, ви просто ігноруєте введені дані, а замість цього читаєте записані дані. Якщо в даних ви бачите натискання лівої клавіші, ви дзвоните MovePlayerLeft()
.