#c #windows #directx #screenshot
#c #Windows #directx #скриншот
Вопрос:
Простой пример — с одной стороны, мы видим, что камера отображается с помощью стандартного программного обеспечения, отображающего «Ввод», с другой стороны (с надписью «Вывод»), отображаемого с помощью некоторых материалов DirectX (по крайней мере, мне так кажется) :
Итак, какая функция предоставляется Windows api или DirectX api для захвата таких смешанных сцен?
Комментарии:
1. Трудно понять, что вы ищете. Не могли бы вы, пожалуйста, уточнить?
2. Я не думаю, что вы можете, потому что другой материал просто извлекается из памяти на видеокарте, но материал DirectX или OpenGL не отображается в памяти таким же образом.
3. нажмите stamp, затем вставьте в paint 😉
Ответ №1:
Сервер TightVNC может это сделать, возможно, вы захотите посмотреть, что они делают. При простом просмотре их исходного кода кажется, что они создают виртуальный экран, который отражает основной экран. Однако, в частности, ознакомьтесь с CreateCompatibleDC
и CreateDIBSection
API
Комментарии:
1. используют ли они зеркальный драйвер?
Ответ №2:
Как я знаю, прямого способа захватить область рендеринга DirectX не существует, хотя мы можем видеть это на экране. Потому что реальное действие рендеринга (или команда рендеринга) происходит на аппаратном уровне. Таким образом, API в стандартном SDK не может знать конечный результат рендеринга, который приводит к черному квадрату.
Возможно, единственный способ сделать это — надеяться на то, что уровень рендеринга (такой как движок DirectX) сам по себе может поддерживать интерфейс вывода, а также базовое действие рендеринга. Поэтому я предлагаю проверить некоторую документацию, чтобы выяснить, действительно ли она существует.
Ответ №3:
DirectX может отображать ограниченный подраздел окна, который вы ему предоставляете, позволяя вам создавать небольшие области DX-содержимого в больших окнах.