Frage

Ich habe eine kurze Frage zu einer directX Anwendung (C ++) in einer verwalteten Umgebung ausgeführt wird. Ich versuche, ein MDI-Tool (in C #) zu schreiben, wo der Hintergrund des übergeordneten Fensters ein eingebettetes machen Fenster von directX (C ++) sein würde.

Ich habe gelesen Möglichkeiten, dass das Schreiben des C ++ beteiligt in eine native DLL, jedoch wäre es lieber sein, um die C ++ Projekte in der Lösung enthalten haben (ich weiß nicht, selbst wenn das möglich ist, obwohl). Eitherway, wenn Sie einige hilfreiche wissen Schritte, Hinweise, oder wenn dies eine schlechte Idee im Allgemeinen ist, lassen Sie es mich wissen. Dank!

War es hilfreich?

Lösung

Der einfachste Weg, dies zu tun wäre, ein C ++ / CLI-Projekt zu Ihrer Lösung hinzuzufügen. Dies würde ermöglichen es Ihnen dann die DirectX-COM-Schnittstellen direkt zu verwenden und einen verwalteten Wrapper erstellen, rufen von Ihrem C # -Code einfach ist. Ich habe diesen Ansatz ein paar Mal getroffen, und es ist bei weitem der einfachste Weg, DirectX und .Net zu mischen, die ich je ausprobiert habe. Managed DirectX verwendet eine Option sein, aber es wird nicht mehr unterstützt und es war eine ziemlich kleine Teilmenge der vollständigen COM API trotzdem.

Andere Tipps

Zu allererst den C ++ Teil in einer anderen DLL-Datei zu schreiben, bedeutet nicht, dass es nicht in der gleichen Lösung wie das C # Projekt sein könnte.

Um nativen DX verwenden auf einem verwalteten Fenster Sie das HWND Fenster id (verwenden form.WindowId.ToInt32) mit dem C ++ D3Ddevice c'tor passieren müssen zu machen. danach jede Zeit werden Sie dieses Gerät render deren Verwendung im .NET-Fenstern machen würde.

das Sie wahrscheinlich zwei Saparate Projekte müssen tun - eine C ++ DLL & .NET-Projekt. verwenden COM-Wrapper oder p-invoke, um das HWND an der C ++ DLL übergeben.

Wenn Sie zu viel Zeit zu verbringen, wollen nicht C auf das Schreiben ++ Code für DirectX, können Sie prüfen, mit SlimDX , da Managed DirectX 1.0 ist die Frage aus, wo als 2,0 nie die Beta verlässt und später ersetzen XNA, die ganz verschieden von DirectX hat selbst und benötigen Sie XNA Game Studio

installieren

SlimDX ist die Open-Source-Version von Managed DirectX mit leicht unterschiedlichen API und der internen Struktur, aber es ist leicht zu verwenden. Die kürzlich veröffentlichte Version ist sehr stabil. Ich verwende es derzeit eine Produktionsanwendung zu schreiben.

SlimDX

Managed DirectX

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top