2010-02-11 28 views
7

Ich bin von WinForms/XNA WPF/SlimDX Übergang, weil:SlimDX Ansichtsfenster in WPF-Steuerelemente

  • a) alle Vorteile von WPF über WinForms (aber Lernkurve = aua)
  • b) Ich möchte mehrere SlimDX-Ansichtsfenster an Panels angeschlossen haben. XNA hat 1 "Spiel" Bildschirm.
  • c, letzte und mindestens) DirectX 10 Unterstützung

Alle meines früheren XNA-Code ist in C#. Ich habe Probleme herauszufinden, wie dies auf einer hohen Ebene auf SlimDX und WPF portiert werden kann. Ich habe wie verrückt gesucht. Die nächstgelegene ich gefunden habe, sind:

1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 Viele Artikel zu dieser Diskussion zeigen, jedoch ist sie unvollständig, und ich kann die XAML nicht herausfinden, und ich bekomme Gerätefehler, nachdem alle der _slimDXDevice und Window1 Ereignisse Anbringen die wurden weggelassen.

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx Dieser Artikel setzt voraus, dass der Benutzer C++ portiert. Ich portiere XNA-Code, der sehr nah an MDX-Code ist.

Wenn ich zu dem Punkt kommen könnte, wo ich ein WPF-Formular mit einem benutzerdefinierten SlimDX-driven Viewport, das nur eine blaue Box war, konnte ich von dort gehen. In XNA habe ich viele RenderTargets gerendert und auf den Bildschirm gelegt, jetzt möchte ich sie an Steuerelemente anhängen. Aber zuerst, nur 1 blaue Box! : D

Irgendwelche Ideen? Ich fühle, dass das entweder einfach ist oder dass es einen "Cookie-Cutter" -Code gibt, den ich vermisse. Sehr geschätzt!

+0

Wir haben eine Probe dieses in SlimDX demonstriert jedoch Ich glaube nicht, dass es in das SVN-Repository eingecheckt ist und ich kann derzeit nicht mit dem Entwickler in Kontakt treten, der es in seiner Arbeitskopie hat. Diese Frage ist irgendwie vage. Fragen Sie nach Hilfe zu den spezifischen Gerätefehlern? Wenn ja, könnten Sie sie posten? –

+0

Ich kann sehen, wie es eine vage Frage ist. Ich frage nicht nach bestimmten Fehlern, ich suche meistens nach einer sehr einfachen, hochwertigen Lösung für das WPF/SlimDX mit C#. Ich kann es nirgendwo dokumentiert oder als Beispiel finden. – bufferz

Antwort

7

Sie können jetzt das Beispiel betrachten.Es ist nur in unserem Repository geprüft, so müssen Sie SVN verwenden, um es zu bekommen (oder warten, bis wir den Februar 2010 Release versenden):

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

+0

Das ist cool, danke. – mdm20

+0

Danke Josh, das ist ein großartiges Beispiel. Schön gemacht mit ViewModels. Ihr seid gut. Ich hoffe, dass andere, die nach WPF/SlimDX suchen, hier landen. Danke noch einmal! – bufferz

+1

Promit hat tatsächlich die Probe geschrieben, nicht ich, aber ich werde das weitergeben. –

0

D3DImage ist die Klasse, die Sie verwenden möchten. Obwohl das Codeprojekt-Tutorial C++ ist, ist es sehr gut auf SlimDX und WPF anwendbar.

Alles, was Sie mit Ihrem SlimDX zu tun haben, ist Ihren Code normal auszuführen, aber führen Sie kein Present (...) auf Ihrem Gerät oder Swap-Kette. An dem Punkt, an dem du ein Present (...) platzierst, führe einen D3DImage.SetBackBuffer (...) aus und sende die ComPointer-Eigenschaft deiner SlimDX-Oberfläche dorthin. Dann machen Sie D3DImage.AddDirect (...) und Sie haben jetzt D3D in WPF zusammengesetzt.

Stellen Sie außerdem sicher, dass Sie ein IDirect3DDevice9Ex erstellen, sonst wird Ihre Leistung in allem außer XP schrecklich sein!

0

Ich habe kürzlich mit D3DImage und SlimDX herumgespielt und fand es nicht zu schwierig, es (mit DirextX9) zu funktionieren. Ich habe einen Code bei meinem Heim-PC, den ich später posten werde, aber er ist dem Code in den bereitgestellten Links ziemlich ähnlich.

Ich konnte es nie mit einer höheren Version von directx arbeiten. Jeremiah hat eine nette blog post über die Verwendung eines directx9-Geräts als Verbindung zwischen directx 10/11/d2d und dem D3DImage, aber ich konnte es nicht mit Slimdx arbeiten. Ich habe mich nicht sehr angestrengt, obwohl directx9 das getan hat, was ich brauchte, und ich wollte irgendwie, dass es unter XP funktioniert.

+0

Update für andere, die hier suchen: Ich kann die Samples in SlimDX problemlos mit der Veröffentlichung von SlimDX für DirectX 10 März 2011 laufen lassen. –

Verwandte Themen