| Autor |
Nachricht |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
23:44:18 16.02.2010 Titel: |
(Un-)Managed Directx C#/C++ ? |
Zitieren |
Ich muss euch nochmal um Rat fragen bezüglich der Wahl zwischen C++ und unmanaged Directx bzw. C# und managed Directx.
Bei C++ war ich es gewöhnt mit Zeigern zu hantieren. Z.B. bei der Darstellung einer komplexen 3D-Landschaft mittels eines Quadtrees. Jetzt gibt es ja bei C# wohl keine Zeiger mehr. Wie würde man das ganze also in C# realisieren? Mit dem Quadtree konnte ich immer nur den Teil der Landschaft darstellen lassen, der auch wirklich sichtbar ist.
Ist managed Directx für ein solches Szenario von der Performance her überhaupt sinnvoll? Ich hatte ja gedacht ich kann in C# auch unmanaged DX verwenden, was aber wohl doch nicht geht. Und was ist eigentlich mit diesem Wrapper bei managed Directx gemeint? Ist managed DX also gar kein richtiges DX?
Welche Einschränkungen gibt es denn bei der Verwendung von WPF in C++ ausser der umständlicheren Programmierung, weil ich die GUI nun nicht mehr mit dem Designer bzw. MS Expression erstellen kann?
Gruß Student83 |
Zuletzt bearbeitet von Student83 am 21:41:23 17.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
21:49:58 17.02.2010 Titel: |
|
Zitieren |
Jetzt bin ich vollends verwirrt. Sagt blos man kann in einer WPF-Anwendung auch kein managed Directx benutzen. Sehe ich das also richtig, dass
unmanaged Directx und C++,
managed Directx und C#
und WPF-Anwendungen
drei komplett unterschiedliche paar Schuhe sind? Wobei die Verwendung von WPF für 3D-Spiele nicht wirklich geeignet ist, da schlechte Performance und die anderen beiden von der Performance her in etwa gleichwertig sind? Dann werde ich die WPF-Sache gleich wieder vergessen und das Programm mit C++ programmieren. |
|
|
|
 |
geeky
Mitglied
Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 5983
|
geeky Mitglied
22:16:37 17.02.2010 Titel: |
|
Zitieren |
|
 |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
23:26:38 17.02.2010 Titel: |
|
Zitieren |
Blöderweise unterstützt XNA kein Windows XP, Directx 10/11 auch nicht. Damit kommt es nicht in Frage. |
Zuletzt bearbeitet von Student83 am 23:32:39 17.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Zeus
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.09.2003
Beiträge: 2401
|
Zeus Mitglied
00:39:19 18.02.2010 Titel: |
|
Zitieren |
DirectX ist eine C API.
Managed DirectX ist eine Wrapper um DirectX-API für .NET.
und WPF ist ein Framework bzw fast eine Engine um 2D/3D-Oberflächen zu visualisieren und nutzt daher DX (IMO mit eigene P/Invoke auf DirectX).
XNA ist eher ein Game-Framework. |
|
|
|
 |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
13:40:58 18.02.2010 Titel: |
|
Zitieren |
Also kann mir mal jemand sagen was sich Microsoft mit diesem ganzen Chaos eigentlich gedacht hat? Richtiges Directx geht nur mit C++, hier ist man aber was die GUI betrifft total eingeschränkt bzw. muss einen riesigen Aufwand betreiben. Managed Directx wird in Zukunft nicht mehr unterstützt. XNA ("die Zukunft") unterstützt Directx nur bis 9.c, wo wir doch demnächst bei 11.1 sind. WPF ist super um GUIs zu erstellen, aber für Directx nicht zu gebrauchen.
Gibt es nicht die Möglichkeit, dass ich die GUI mit WPF darstelle und getrennt davon den Fensterinhalt mit managed oder auch unmanaged Directx? |
|
|
|
 |
adonis
Mitglied
Benutzerprofil
Anmeldungsdatum: 19.06.2006
Beiträge: 310
|
adonis Mitglied
12:06:01 19.02.2010 Titel: |
|
Zitieren |
Hi,
also managed directX, gibt es nicht mehr, dafür gibt es nun XNA.
XNA geht natürlich auch unter WindowsXP, ich nutze schon länger XNA.
XNA ist ein Framework mit dem es möglich ist, für XBox und PC, Spiele zu
entwicklen. Was, wie ich finde, sehr vorteilahft ist.
Bis jetzt brauchte ich noch kein DX10 und DX11.
und wenn man sich mal die Spiele für XBOX anguckt...
Wieviel Spiele gibts schon für DX10? glaub mir fallen da nur 2 ein,
die aber auch, genauso gut aussehen wie unter 9.
Aber leider ja, wenn man DX10&11 nutzen will muss man "noch" C++ nutzen.
XNA geht auch mit wpf und windows forms, man brauch nur ein Handle
von dem fenster, was bei wpf etwas komplizierter ist, da wpf nich
mit handles arbeitet, dafür gibt es aber eine Helperklasse.
Zeiger sind auch mit C# möglich, mit dem Schlüsselwort unsafe.
Dann schreibst du unsafe Code. Oder halt mit "ref" etc arbeiten. |
|
|
|
 |
/rant/
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.10.2008
Beiträge: 1527
|
/rant/ Mitglied
12:53:23 19.02.2010 Titel: |
|
Zitieren |
Ich wollte ja immer C++/CLI mit Unmanaged DirectX verwenden, aber mit Visual Studio 2010 degradiert Microsoft C++/CLI. Das wäre so ziemlich die einzige Möglichkeit gewesen, unmanaged DirectX mit den einfachen Forms von .NET zu verwenden |
_________________ MCP, MCTS and more! | "It's 7:05am. I have not slept." | www.google.com
|
|
 |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
13:33:11 19.02.2010 Titel: |
|
Zitieren |
C++/CLI ist doch managed C++? Dann habe ich das auch gelesen.
Für WPF und managed/unmanaged Mixcode habe ich in der MSDN folgendes gefunden:
http://msdn.microsoft.com/en-us/library/ms742522.aspx
und dann noch folgender Trick:
www.codeguru.com/cpp/cpp/cpp_managed/general/article.php/c16355
Beschreiben die beiden Links also die Nutzung von WPF mit C++/CLI? So ganz klar ist mir das nicht, oder ist das noch eine andere Möglichkeit? Falls nicht macht dieser Weg wenn man demnächst VS 2010 nutzen möchte also auch keinen Sinn mehr. Ich frage mich nur warum man so wenig darüber liest. Bin ich der einzige, der ne schöne GUI und nativ mit DirectX programmieren möchte?
Dann bleibt ja eigentlich nur noch eine WPF-Anwendung mit XNA. Aber das ist auch wieder nur ne halbe Sache.
Oder man schreibt sich eine eigene GUI und lässt diese direkt mit ins Directx-Fester rendern. In diesem Fall aber zu zeitaufwändig, weil die GUI schon recht komplex werden wird. |
|
|
|
 |
Student83
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2008
Beiträge: 170
|
Student83 Mitglied
13:41:54 19.02.2010 Titel: |
|
Zitieren |
EDIT:
Ich habe mich nochmal internet umgeschaut und es gibt wohl doch die Möglichkeit Direct3D9 mit unmanaged C++ in einer WPF-Anwendung zum Laufen zu bringen.
Dazu habe ich folgendes Code-Beispiel gefunden:
www.codeproject.com/KB/WPF/D3DImage.aspx
Leider lässt es sich bei mir nicht compilieren (Win 7 x64). Sobald ich wie im Text beschrieben "nicht verwaltetes Debugging aktiviere" bekomme ich die Fehlermeldung, dass der Debugger keine gleichzeitiges Debugging von verwaltetem und systemeigenem Code auf dieser Platform unterstützt.
Lasse ich diese Einstellung weg, kommt folgender Fehler:
{"Die in der Assembly "D3DImageSample, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" definierte Instanz von "Window1" kann nicht erstellt werden. Ein Aufrufziel hat einen Ausnahmefehler verursacht. Fehler in Markupdatei "Window1.xaml", Zeile 1, Position 9."}.
Laut den Kommentaren auf obiger URL hat dies auch mit Windows 64bit zu tun. |
Zuletzt bearbeitet von Student83 am 14:41:22 20.02.2010, insgesamt 1-mal bearbeitet |
|
 |