Какой самый эффективный способ сделать скриншот и сделать анализ на нем в OS X - PullRequest
2 голосов
/ 11 марта 2012

Мне нужно иметь возможность получать выходные данные игры и извлекать простые данные из HUD (получать числовые данные из элементов пользовательского интерфейса шрифта фиксированной ширины и т. Д., Простые вещи), но мне нужно уметь делать это в режиме реального времени, как в игру играют. Я могу очень хорошо анализировать изображения, моя проблема - получить скриншот достаточно быстро.

Есть несколько вариантов, которые я рассматриваю, и мне нужен совет от тех, у кого есть опыт, который лучше всего подходит для моих нужд.

Я подумал только об использовании Quartz Display Services или CGWindow API, чтобы получить снимок экрана и затем проанализировать полученное изображение, однако это представляется довольно неэффективным, и я хотел бы иметь возможность делать это много раз в секунду (в идеале так быстро, как игра рендерится, но это может быть нереально).

Я также подумал о переносе своего материала для анализа изображений в OpenCL (что я могу в конечном итоге сделать из-за его высокой степени распараллеливания), таким образом устраняя необходимость вставлять скриншот между GPU и CPU. Если это звучит разумно, каков самый быстрый способ атомарного чтения (или создания копии) кадрового буфера? Кажется, есть много документации по отправке материалов из OpenCL в OpenGL, но не наоборот, и я даже не имею никакого контроля над частью OpenGL (сторонняя игра с закрытым исходным кодом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...