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