Как сделать снимок экрана с помощью DXGI? - PullRequest
1 голос
/ 17 июня 2019

Короткая версия:

Мне нужна функция C # для вставки в мой код, которая делает снимок экрана прямоугольника (x, y, w, l) экрана, используя DXGI (при условии, что на него ссылаются), потому что я считаю, что это будет лучше, чем Graphics.CopyFromScreen.

Длинная версия:

Я пишу игровой макрос на C #, и он использует информацию с экрана, чтобы определить, что делать. В частности, он постоянно снимает скриншоты как Bitmap с и выполняет кучу GetPixel с. Прямо сейчас я использую Graphics.CopyFromScreen для получения изображений, и это очень неудобно для меня, так как создание снимков всего экрана занимает слишком много времени, а работа с частичными снимками экрана - совсем другая задача (которую я сейчас выполняю, но я верю, что это можно сделать проще).

Я попытался сравнить CopyFromScreen с неуправляемым BitBlt, как с целым экраном, так и с небольшой его областью, и производительность примерно одинакова (я чувствую, что под капотом это одно и то же). Затем я узнал о SharpDX и манипуляциях с ним, связанных с ним. Есть много проектов, которые снимают видео с экрана, и несколько, которые делают скриншоты, но я не могу понять код достаточно, чтобы интегрировать его в мой проект. Я надеюсь, что кто-то может помочь.

В качестве примечания, приложение, которое я снимаю, использует OpenGL, если это помогает.

...