Я хочу написать программу для экрана для платформы Windows, но не знаю, как сделать снимок экрана. Единственный известный мне метод - это использовать GDI, но мне любопытно, есть ли другие способы сделать это, и, если есть, то какие издержки наименьшие? Скорость является приоритетом.
Программа для создания скринкастинга будет предназначена для записи игровых материалов, хотя, если это сузит варианты, я по-прежнему открыт для любых других предложений, которые выпадают из этой области. Знание не плохо, в конце концов.
Редактировать : я наткнулся на эту статью: Различные методы захвата экрана . Он познакомил меня с методикой Windows Media API и DirectX. В заключении упоминается, что отключение аппаратного ускорения может значительно повысить производительность приложения захвата. Мне любопытно, почему это так. Может ли кто-нибудь заполнить пропущенные для меня пробелы?
Редактировать : я читал, что такие программы, как Camtasia, используют собственный драйвер захвата. Может ли кто-нибудь дать мне подробное объяснение того, как это работает, и почему это быстрее? Мне также может понадобиться руководство по реализации чего-то подобного, но я уверен, что в любом случае существует документация.
Кроме того, теперь я знаю, как FRAPS записывает экран. Он перехватывает базовый графический API для чтения из заднего буфера. Из того, что я понимаю, это быстрее, чем чтение из переднего буфера, потому что вы читаете из системной памяти, а не видео-памяти. Вы можете прочитать статью здесь .
MovePlayerLeft()
. И вы также записываете время и продолжительность нажатия клавиш и другой ввод. Затем, когда вы находитесь в режиме воспроизведения, вы просто игнорируете ввод и вместо этого читаете записанные данные. Если в данных вы видите нажатие левой клавиши, вы звоните MovePlayerLeft()
.