NV_DX_interop erfahrungen ?
-
hi,
ich wollt nachfrgaen ob es hier jemand gibt der schon einmal mit NV_DX_interop
was gearbeitet hat und eventuel ein Beispiel hat.Mit freundlichen grüßen
-
Ich hab weder Erfahrung damit, noch ein Beispiel dafür, aber mich würd interessieren, wofür genau du das brauchst. Vielleicht gibts eine bessere Lösung, als so ein herstellerspezifisches Zeug!?
-
Also meine Aufgabe ist ein OpenGl-Objekt in einer Windowsform zu rendern und anschließend dies mit WPF in einem neuen Fenster darstellen.
Die Möglichkeit die Interoperabilität von WPF mit den Windowsforms zu nutzen wurde bereits versucht und als Lösungsmöglichkeit ausgeschlossen. Aus diesem Grund bekam ich den Tipp mit dem NV_DX_interop.
Würde mich natürlich auch über weitere Lösungsmöglichkeiten freuen
Mfg
-
koala schrieb:
Also meine Aufgabe ist ein OpenGl-Objekt in einer Windowsform zu rendern und anschließend dies mit WPF in einem neuen Fenster darstellen.
Die Möglichkeit die Interoperabilität von WPF mit den Windowsforms zu nutzen wurde bereits versucht und als Lösungsmöglichkeit ausgeschlossen.
Sry, das kapier ich grad nicht ganz. Du willst mit OpenGL in ein WindowsForms Control rendern und dieses dann in eine WPF Anwendung einbetten?
Wie genau soll das ohne WPF <-> Winforms Interop funktionieren?
Und gibt es einen bestimmten Grund, wieso es unbedingt OpenGL sein muss? Wenn du in eine WPF Anwendung reinrendern willst, tust du dir mit Direct3D wohl wesentlich leichter. Abgesehen davon, kann man simple 3D Grafik direkt in WPF machen, ohne dass man OpenGL oder Direct3D auch nur anrühren müsste; vielleicht reicht das für deine Zwecke schon!?
-
Es muss leider von OpenGl(WindowsForms) -> WPF anwendung.
Der grund das es Opengl seien muss ist der, das nacher komplexe Modelle die von einem Tool stammen benutzt werden sollen.
Die Idee die ich halt bei dem NV_DX_interop hatte war es direkt in die DirektX Buffer zu schreiben. Iwie muss ich halt die Daten des Models für WPF schmackhaft machen...
-
koala schrieb:
Es muss leider von OpenGl(WindowsForms) -> WPF anwendung.
Der grund das es Opengl seien muss ist der, das nacher komplexe Modelle die von einem Tool stammen benutzt werden sollen.
Die Idee die ich halt bei dem NV_DX_interop hatte war es direkt in die DirektX Buffer zu schreiben. Iwie muss ich halt die Daten des Models für WPF schmackhaft machen...Naja, ich seh da aber immer noch keinen Grund, wieso das unbedingt OpenGL sein muss. Komplexe Objekte, die von einem Tool stammen, kannst du mit Direct3D genauso rendern und Direct3D kann mit WPF eben direkt zusammenarbeiten, sodass sich dein ganzes Problem damit erledigt hätte und auch der Windows Forms Part komplett wegfällt. Einfach nur ein Triangle Mesh anzeigen, kann WPF sogar out of the Box; du müsstest dein Model wohl einfach nur in das entsprechende Format konvertieren...
Direct3D und OpenGL sind rein funktional praktisch völlig gleichwertig, wieso also OpenGL -> Windows Forms -> Direct3D -> WPF und sich dabei noch von herstellerspezifischen Extensions abhängig machen, sodass das Ganze am Ende ausschließlich nur auf NVIDIA Grafikkarten funktioniert, wenn du genau so gut einfach Direct3D -> WPF oder unter Umständen sogar einfach nur WPF machen könntest!?
-
erstmal möchte ich mich bedanken das du dich mit mir rumschlagst
Naja, ich seh da aber immer noch keinen Grund, wieso das unbedingt OpenGL sein muss.
Ich versteh nicht recht wie es anders seien soll den des ganze Programm(wirklich großes) nutzt OpenGL und Windows Form fürs Fenster.
Meine Aufgabe war es halt jetzt eine Lösung für das anfangs genannte Problem zu finden. Also hab ich als vereinfachte Simulation des Programmes ne klasse geschrieben die ein einfaches Modell in einer Windows Form anzeigt.
Ich versteh jetzt nicht wirklich wie du des jetzt mit Direct3D meinst(liegt wahrscheinlich einfach nur an meinem beschränktem Wissen)
Würde mich freuen wenn du bissle Licht ins Dunkel bringen kannst.
mfg
-
koala schrieb:
Naja, ich seh da aber immer noch keinen Grund, wieso das unbedingt OpenGL sein muss.
Ich versteh nicht recht wie es anders seien soll den des ganze Programm(wirklich großes) nutzt OpenGL und Windows Form fürs Fenster.
Meine Aufgabe war es halt jetzt eine Lösung für das anfangs genannte Problem zu finden. Also hab ich als vereinfachte Simulation des Programmes ne klasse geschrieben die ein einfaches Modell in einer Windows Form anzeigt.
Ok, du hast also eine fertige Anwendung, die Windows Forms und OpenGL verwendet. Wo genau kommt da jetzt WPF ins Spiel?
-
guten morgen,
nun soll das Modell aus der Anwendung in mit hilfe von WPF in einem Fenster durch DirectX angezeigt werden. Es ist halt wichtig gewesen das am Ende die Sache durch DirektX gezeichnet wird. Eine andere möglichkeit ausser WPF ist mir leider nicht bekannt.
Ich hab leider noch keine ahnung wie der schritt von der OpenGl Anwendung zu WPF aussehen soll. Opengl-> WindowsForm -> ??? -> WPF
-
Ok, ich denk, wir müssen erstmal ein paar Begrifflichkeiten klären, bevor wir hier weiterkommen, weil ich hab das Gefühl, dass du unter einigen Dingen etwas völlig anderes verstehst, als ich.
koala schrieb:
nun soll das Modell aus der Anwendung in mit hilfe von WPF in einem Fenster durch DirectX angezeigt werden.
Was genau verstehst du unter "durch DirectX anzeigen". Irgendwie bekommt ich das Gefühl, dass du dabei nur an das Anzeigen eines mit OpenGL erzeugten 2D Bildes denkst!? Unter deinem "OpenGL-Objekt" verstehst du dann auch nicht das eigentliche 3D Modell, sondern nur das mit OpenGL gerenderte 2D Bild!?
Das wirft natürlich die nächste Frage auf: Was genau denkst du, dass Direct3D ist?koala schrieb:
Es ist halt wichtig gewesen das am Ende die Sache durch DirektX gezeichnet wird. Eine andere möglichkeit ausser WPF ist mir leider nicht bekannt.
Was verstehst du darunter, inwiefern ist WPF die einzige dir bekannte Möglichkeit, um etwas "durch DirectX zu zeichnen".
Kannst du nicht einfach das WinForms Control in WPF hosten?
-
des mit den klären der Begrifflichkeiten verschieben wir mal.
Ich probier gerade deinen Vorschlag aus mit dem hosten der WinForm. Hast du zufällig schon Erfahrungen in diesem Bereich ( ich nämlich gar net) ?
Ich hab jetzt soweit die anleitung durchgearbeitet aber frag mich wie ich mein Winform da einbringen kann. Wäre es möglich aus dem Projekt eine dll zu machen und sie dann beim WPF Projekt einfach einzubinden ?
Meine WinForm-OpenGL Programm hab ich nach diesem Code Beispiel erstellt
http://www.codeproject.com/Articles/16051/Creating-an-OpenGL-view-on-a-Windows-FormMfg