Устройство DX11, созданное на неуправляемом C++, для использования в окне WPF

Я довольно долго работал над простым графическим движком на C++ с использованием Direct3d 11. Я решил попробовать создать графический интерфейс просто для удовольствия, и после прочтения некоторых статей о WPF он мне очень понравился. Дело в том, что я не уверен, возможно ли то, что я хочу сделать.

Что я хотел бы сделать, так это загрузить DLL моего движка в приложение WPF и использовать устройство DX внутри части окна WPF. По сути, то, что я хочу сделать, похоже на редактор карт (где в главном окне есть куча элементов управления и дочернее окно, содержащее область рендеринга — устройство), но вместо преобразования моего движка в XNA я бы хотел использовать уже работающий код C++ с WPF. Это возможно?

Кроме того, я попробовал просто для практики создать окно с Win32 и подключить к нему устройство. Это был простой вопрос назначения окна HWND устройству при его создании. Я предполагаю, что то же самое с окном WPF, или я ошибаюсь? Спасибо за прочтение :)

Изменить: забыл упомянуть, что я полный новичок в C #, но я знаю, что вы можете импортировать DLL C ++ и использовать ее функции, я просто не уверен насчет взаимодействия устройства с окном wpf.


person Xsy    schedule 20.08.2013    source источник


Ответы (3)


WPF в основном работает с управляемым кодом. Управляемый код означает, что большую часть задач выполняет сборщик мусора. И, как я вижу из вашего поста, вы хотите интегрировать DLL C++, которая является неуправляемым кодом. Использование библиотеки C++ в WPF не так просто, но возможно. C# предоставляет много других аспектов для обработки подобных сценариев.

Вам нужно будет взглянуть на интероперабельность и неуправляемый код. Посмотрите ссылку ниже: Пример проекта

person Jeet    schedule 20.08.2013
comment
Спасибо за ответ, очень полезная ссылка! - person Xsy; 21.08.2013

WPF поддерживает встраивание поверхностей D3D.

Начните здесь http://msdn.microsoft.com/en-us/library/system.windows.interop.d3dimage.aspx

person Tamir Daniely    schedule 10.10.2014

Для взаимодействия WPF/D3D11 просмотрите WPFDXInterop, написанный инженером Microsoft. Это позволяет вам иметь цель рендеринга D3D внутри окна WPF с правильным взаимодействием. Пример проекта по ссылке.

person Pepor    schedule 11.04.2017