Ist SharpDX ausgereift genug, um es zu übernehmen, oder sollte ich SlimDX jetzt einfach verwenden?

10

Ich bin dabei, mein Spielprojekt in XNA zu stoppen, da die Entwicklung meines Wissens zu Ende geht (und bereits hinter der aktuellen Technologie steckt). Daher muss ich ein neues Framework oder eine neue API einführen.

Ich habe gerade 2 Tage mit C ++ verbracht und festgestellt, dass es wirklich nichts für mich ist - allerdings finde ich den unformatierten Zugriff auf DirectX ansprechend. SharpDX klingt nach einem guten Ausgangspunkt, enthält jedoch keine Dokumentation und keine Codekommentare. Ich habe das Gefühl, dass es noch nicht ganz einsatzbereit ist.

Ich interessiere mich für die Meinungen von Menschen, die eines oder beide dieser Frameworks verwendet haben, um sicher zu entscheiden, welches ich lernen soll. Vielen Dank für jeden Rat.

Gavin Williams
quelle
1
Sehr gesprächige Frage :). SharpDX ist wahrscheinlich genauso ausgereift wie SlimDX, da es direkt aus den Headern generiert wird - als solches hat er sofort 100% von DirectX verpackt. Beide Bibliotheken sind im Wesentlichen gleich; Sie können also einfach die SlimDX-Beispiele für SharpDX verwenden.
Jonathan Dickinson
1
Es ist möglich, dass Ihre Zurückhaltung, C / C ++ zu lernen, das eigentliche Problem in Bezug auf die Aufregung ist. Solange Sie auf dem verwalteten Niveau bleiben, werden Sie nie an das echte Fleisch kommen, IMO. Dies von jemandem, der lange Zeit auf verwaltete Sprachen schwor, obwohl er formell in C ++ geschult war. Nur eine Beobachtung. Vermeiden Sie C ++ nicht zu sehr . Wenn Sie dies tun, werden Ihre Möglichkeiten in dieser Branche sicherlich eingeschränkt, obwohl das Gegenteil definitiv nicht der Fall ist. Tatsächlich bietet es Ihnen einen soliden Einstieg in andere Branchen (Medizin, Finanzen, Verteidigung). Die durchschnittliche Bezahlung ist dort viel besser, FYI.
Ingenieur
Ich interessiere mich wirklich für DX, und obwohl ich mein Projekt möglicherweise entweder auf Slim oder Sharp portiere, höre ich mit Sicherheit, was Sie sagen. Und es würde mir wahrscheinlich gut tun, weiterhin C ++ zu lernen, damit ich dieses Unbehagen überwinden kann. Ich würde gerne denken, dass ich in 12 Monaten, wenn ich in einer Position wäre, in der ich C ++ / Direct X verwenden müsste, dies tun könnte, wenn es das richtige Werkzeug für den Job ist.
Gavin Williams

Antworten:

16

Ich bin der Autor von SharpDX, daher wird mein Rat voreingenommen sein, aber ich möchte zumindest auf einige Ihrer Bedenken eingehen.

In Bezug auf die SharpDX-Dokumentation ist der aktuelle Status sehr begrenzt, da ich bisher daran gearbeitet habe, die gesamte DirectX-API über .NET und das neue Win8-Betriebssystem zugänglich zu machen. Da ich auf dieser Seite noch nicht fertig bin, arbeite ich daran, eine vollständige Website und einige Artikel bereitzustellen, in denen die wichtigsten Konzepte von SharpDX erläutert werden und wie Sie das Beste daraus machen können. Denken Sie auch daran, dass dieses Projekt hauptsächlich DirectX in .NET bringen soll. Es handelt sich also immer noch um eine API auf niedriger Ebene. Sie müssen sich also ein wenig mit dem Verhalten der C ++ - API befassen, um zu verstehen, wie es funktioniert. Glücklicherweise wird fast jede einzelne Methode in SharpDX einer einzelnen Methode in der DirectX-API zugeordnet. Daher ist es einfach, die Verwendung einer Methode durch Überprüfen der DirectX-API zu überprüfen. Das Dokumentationssystem, das mit SharpDX 2 verfügbar sein wird.

Ist SharpDX bereit für die Entwicklung eines Spiels? Kurz gesagt, ja.

Zunächst wurde ich von einem japanischen Unternehmen beauftragt, an der Entwicklung einer neuen 3D-Engine in C # teilzunehmen, und wir verwenden SharpDX für das Rendering-Backend unter Windows.

Zweitens habe ich viele private Mails von Entwicklern von Unternehmen erhalten, die SharpDX zur Entwicklung von Multimedia-Anwendungen verwenden (von Spielen über Level-Editor bis hin zu Online-Fotoveröffentlichungen usw.). Einige dieser Kunden sind ziemlich groß (ich kann sie leider nicht zitieren).

Schließlich verwenden (oder werden) einige öffentliche Open Source-Projekte SharpDX für ihr Haupt-Backend-Rendering. Beispielsweise verwendet Delta Engine bereits SharpDX für das Direct3D11-Rendering (das auch für Win8 verfügbar sein wird). Das kommende ANX-Projekt (ein Open-Source-XNA-Nachfolger) verwendet SharpDX auch für das Rendern, die Gamepads und das Audio-Management.

Aber SharpDX ist nur ein Schritt auf dem Weg zum Aufbau einer Spiel-Engine und dann eines Spiels. Da die API auf niedriger Ebene ausgeführt wird, können Sie nicht erwarten, dass Sie über dieselben Funktionen auf hoher Ebene verfügen, die Sie von einem Framework wie XNA gewohnt waren. Aber mit einem minimalen Rahmen könnten Sie viele Dinge tun.

Sie können auch ein etabliertes Produkt wie Unity verwenden, um tragbare Spiele in C # zu entwickeln.

xoofx
quelle
1
+1 für ANX. Wirklich aufregend, da ich die Einfachheit von XNA wirklich liebe (ich habe #DX aufgrund der Menge an Boostrap-Code schnell aufgegeben).
Jonathan Dickinson
Wow, danke, dass du Alexandre hinzugefügt hast. Ich habe heute Abend einige deiner Beiträge gelesen, als du aus dem slimDX-Team ausgetreten bist und was du für SharpDX vorhast. Es ist großartig, solch fokussierte Arbeit zu sehen, und es ist großartig, ein anderes verwaltetes Framework zu haben. Verwaltete Grafik-Engines werden immer größer, und ich denke, wir haben noch nicht die volle Möglichkeit gesehen. Ich hoffe nur, dass die Leistungsprobleme mit verwaltetem Code, unabhängig davon, ob sie aus Anrufzeiten oder dem Verhalten des Garbage Collectors stammen, behoben oder minimiert werden können, um keine Rolle zu spielen. Ihre Arbeit trägt sicherlich zu dieser Lösung bei.
Gavin Williams
Es gibt wirklich eine große Auswahl. Ich habe Unity heruntergeladen. Ich habe mir noch nie eine Game-Engine oder ähnliches angesehen, daher sollte es interessant sein zu sehen, was sie kann und wie sie es macht. Ich habe die Grundlagen meines Projekts bereits in xna geschrieben und es liegt irgendwo in der Nähe von 5000-10.000 Codezeilen, also würde ich diesen Code gerne verwenden, wenn ich könnte. Aber es ist noch weit davon entfernt, vollständig zu sein. Wenn ich ein oder zwei Wochen damit verbringe, mir verschiedene Frameworks und Engines anzuschauen, ist das keine schlechte Investition.
Gavin Williams
Hatte vor diesem Beitrag noch nie von ANX gehört. Sehr interessiert, wohin das führt. Übrigens
David Gouveia