Области просмотра SlimDX в средствах управления WPF

Я перехожу от WinForms/XNA до WPF/SlimDX потому что:

  • a) все преимущества WPF по WinForms (но кривая обучения = ай!)
  • b) Я хотел бы иметь несколько областей просмотра SlimDX, присоединенных к Панелям. XNA имеет 1 "игровой" экран.
  • c, в последний раз и наименьшее) поддержка DirectX 10

Весь мой предыдущий код XNA находится в C#. Я испытываю затруднения при выяснении, как портировать это на SlimDX и WPF на высоком уровне. Я искал как сумасшедший. Самые близкие, которые я нашел:

1) статьи http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 Many указывают на это обсуждение, однако это неполно, и я не могу выяснить XAML, и я получаю ошибки устройства после присоединения всех _slimDXDevice и событий Window1, которые были не учтены.

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx Эта статья принимает пользователя, портирует C++. Я портирую код XNA, который является очень близко к коду MDX.

Если я мог бы перейти к сути дела, где у меня есть форма WPF с пользовательским SlimDX управляемая область просмотра, которая была просто синим полем, я мог пойти оттуда. В XNA я представил многие отдельные RenderTargets и разместил их на всем протяжении экрана, теперь я хочу присоединить их к средствам управления. Но сначала, всего 1 синее поле!:D

Какие-либо идеи? Я чувствую, что это или просто или что существует некоторый "код" резака cookie, который я пропускаю. Значительно ценивший!

7
задан bufferz 11 February 2010 в 17:46
поделиться

3 ответа

Теперь вы можете посмотреть образец. Он только что зарегистрирован в нашем репозитории, поэтому вам нужно будет использовать SVN, чтобы получить его (или подождите, пока мы не отправим выпуск от февраля 2010 г.):

http://code.google.com/p/slimdx/source / detail? r = 1356

7
ответ дан 7 December 2019 в 07:45
поделиться

D3DImage - это класс, который вы хотите использовать. Несмотря на то, что руководство по программному проекту написано на C ++, оно очень применимо к SlimDX и WPF.

Все, что вам нужно сделать с вашим SlimDX, - это запустить ваш код в обычном режиме, но НЕ запускайте Present (...) на вашем устройстве или цепочке подкачки. В точке, где вы поместите Present (...), выполните D3DImage.SetBackBuffer (...) и отправьте ему свойство ComPointer вашей поверхности SlimDX. Затем выполните D3DImage.AddDirect (...), и теперь у вас есть D3D, составленный в WPF.

Также убедитесь, что вы создали IDirect3DDevice9Ex, иначе ваша производительность будет ужасной ни в чем, кроме XP!

0
ответ дан 7 December 2019 в 07:45
поделиться

Я недавно возился с D3DImage и SlimDX и не нашел это слишком сложным чтобы заставить его работать (с DirextX9). У меня есть код на моем домашнем компьютере, который я опубликую позже, но он очень похож на код в предоставленных ссылках.

Мне так и не удалось заставить его работать с более поздней версией DirectX. У Иеремии есть хорошая запись в блоге об использовании устройства directx9 в качестве связующего звена между directx 10/11 / d2d и D3DImage, но мне не удалось заставить его работать с Slimdx. Я не приложил много усилий, поскольку directx9 делал то, что мне нужно, и я хотел, чтобы он работал на XP.

0
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: