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

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

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

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

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

2

Решение

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

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

0

Другие решения

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

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

1

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

0
По вопросам рекламы [email protected]