DirectX на геометрии WPF
У меня просто вопрос: мне нужно нарисовать некоторые геометрии WPF на холсте, и поверхность каждой геометрии - сложная Texture2D в Direct3D 11. Я использую SharpDX и просто конвертирую Texture2D в MemoryStream, а затем преобразую в WPF ImageSource, потому что Я использую Compute Shader, Format.Bgra не поддерживается с текстурой БПЛА, поэтому я не могу использовать D3DImage. Поскольку есть проблемы с производительностью, как я могу напрямую связать Texture2D с геометрией WPF? Благодарю.
2 ответа
Из соображений производительности вы должны выполнять весь рендеринг с SharpDX и не использовать WPF Geometries, а только D3DImage для синхронизации результата рендеринга с WPF. Если вам нужно преобразовать текстуру из одного формата в другой для соответствия форматам WPF, вы можете просто визуализировать полный квад с помощью простого шейдера, копирующего текстуру. Если вы делаете это с помощью SharpDX Toolkit, его довольно легко разработать, так как он предоставляет элемент управления WPF.
Короткий ответ: нельзя, WPF 3D все еще находится в зачаточном состоянии, а поддержка пользовательских шейдеров доступна только для 2D-эффектов. Лучший совет, который я могу предложить на данный момент, - визуализировать вашу геометрию на поверхности XNA и отобразить ее в AirspacePopup с элементами управления WPF сверху.