Как захватить рабочий стол на окнах, чтобы он захватывал как DirectX, так и нормально отображаемые части экрана? - PullRequest
2 голосов
/ 04 июня 2011

Простой пример - с одной стороны мы видим камеру, отрисованную с помощью стандартного программного обеспечения, с надписью «Вход», с другой стороны (с пометкой «Вывод»), отрисованную с помощью некоторого DirectX (по крайней мере, мне кажется):

enter image description here

Итак, какую функцию предоставляют API Windows или API DirectX для захвата таких смешанных сцен?

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

TightVNC Server может сделать это, вы можете посмотреть, что они делают. Простым взглядом на их исходный код кажется, что они создают виртуальный экран, который отражает основной экран. В частности, хотя, посмотрите в CreateCompatibleDC и CreateDIBSection API

1 голос
/ 04 июня 2011

DirectX может отображать в ограниченном подразделе окна, которое вы ему предоставляете, что позволяет вам создавать небольшие области содержимого DX в больших окнах.

1 голос
/ 04 июня 2011

Как я знаю, прямого способа захвата области рендеринга DirectX нет, хотя мы можем видеть это на экране.Потому что реальное действие рендеринга (то есть инструкция рендеринга) происходит на аппаратном уровне.Поэтому API в стандартном SDK не может знать окончательный результат рендеринга, который приводит к черному квадрату.

Единственный способ сделать это, возможно, заключить надежду на слой Render (например, механизм DirectX), который может поддерживать выводинтерфейс, а также базовое действие рендеринга.Поэтому я предлагаю проверить некоторую документацию, чтобы найти, действительно ли она есть.

...