SharpDX Toolkit / OpenGL

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    SharpDX Toolkit / OpenGL

    Guten Tag :) ,

    ich brauche wiedermal euren Rat.
    Ich möchte gerne in 2D zeichnen, später dann auch 3D.
    Bis jetzt habe ich GDI+ (in VB) verwendet, wobei die Performance nicht die Beste ist.
    Deshalb möchte ich gerne nach Alternativen suchen.

    Leider finde ich lauter alte Threads, wo das "Sharp-DX Toolkit" erwähnt wird.
    Gibt es das Toolkit noch ? Ich finde auf der Sharp-DX Seite leider dieses Toolkit nicht.

    Was würdet Ihr mir für 2D und später 3D empfehlen (SharpDX,OpenGL) ?
    Derzeit bin ich in VB unterwegs.
    Wenn es etwas unter C# besseres gibt, bin ich auch gerne bereit "etwas Neues" zu lernen :D .

    In 2D zeichne ich derzeit einfache Objekte (Linie, Ellipse und Arc), welche gezoomt und verschoben werden können.
    Wenn viele Objekte dargestellt werden und gezoomt werden in GDI+, stockt die Darstellung.

    Vielen Dank!

    Liebe Grüße
    Hi
    wenn du später sowieso 3D machen willst, würde ich dir empfehlen, dich direkt in OpenGL, Vulkan oder DirectX einzulesen. Für alle drei gibt es Wrapper, soweit ich das sehe, zumindest für OpenGL und DirectX weiß ich, dass es gute gibt. Wenn du dich nicht von Windows entfernst, wähle wohl am besten DirectX.

    3D und 2D unterscheiden sich nicht signifikant. Arbeite dich vielleicht wirklich einfach in Direct3D ein. Bereite dich aber auf jede Menge Arbeit, viel Stoff und Hintergrundwissen vor und auch darauf, dass du wirklich für quasi alles Shader schreiben musst, außer du machst es über Texturen (dafür brauchst du nur einen). Shader sind Programme, die später auf der GPU ausgeführt werden.
    Wenn es dir darum geht, ein 2D-Spiel zu entwerfen, wäre vielleicht Unity gut für dich. Die Tutorial-Videos, die dort angeboten sind, dürften hilfreich sein und zu schnellen Ergebnissen führen.

    Viele Grüße
    ~blaze~
    Mit am "besten" meinte @~blaze~ außerdem dass es einfacher zu verwenden ist und mehr Sachen beinhaltet, wie das Laden verschiedener Dateiformate, da du das .Net Framework benutzt macht das mMn aber auch fast nichts aus.
    Ansonsten ist DX ja immer 5 Jahre hinterher :P
    Wobei man DX12 ja loben muss, sie werden immer ähnlicher zu OpenGL und noch ähnlicher zu Vulkan. Dass Vulkan die Zukunft aus den drei sein sollte steht außer Frage. Jedoch dürfte Vulkan im vgl. zu den anderen beiden ziemlich low-level sein. Also auch erst mal viel Aufwand, anschließend jedoch die Vorteile der Performance. Es gibt auch einen .Net Wrapper, jedoch hab ich den noch nie probiert bzw. mich noch nicht an Vulkan ran gewagt:
    github.com/mono/VulkanSharp

    Die Zukunft liegt deshalb aber denke ich auch nicht in einachen Wrappern, sondern eben in Engines. Aber Engine selber schreiben macht Spaß und du lernst viel wie Engines zu funktionieren haben kannst somit besser optimieren etc. also immer auch Sinnvoll.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hey,
    ​da ich vorhatte fast die gleiche Frage zu stellen, schließe ich mich mal hier an.
    Ich habe in letzter Zeit viel mit 3D-modelling (Blender) gearbeitet und suche jetzt natürlich die Möglichkeit Spiele mit meinen "Schöpfungen" zu entwickeln. Bloßes DirectX/OpenGL zu benutzen schließe ich fast direkt aus. Man muss ja nicht das Rad neu erfinden ;) . Kennt jemand eine gute Engine im 3D Bereich, die vorzugsweise in C++ aber auch in C# zu verwenden ist? Man sollte 3D Modelle inkl. Armature (Bones) ohne viel Aufwand importieren können. Windows als Plattform reicht dicke, muss nicht auf anderen Systemen laufen.
    Bitte nicht falsch verstehen, ich möchte kein Spiel erstellen.
    Es soll eher Richtung "ein wenig" CAD-Darstellung sein.
    Also vorerst ganz einfache Objekte, wie Linie, Ellipse und Arc - darstellen, verschieben, zoomen und
    auswählen (Erkennen ob die Maus über diesem Objekt ist).
    In 3D soll es auch einfach gehalten werden.

    Erfahrung in DirectX, OpenGL oder Vulkan habe ich überhaupt nicht.
    GDI+ ist das Einzige was ich kenne und einfach zu handhaben ist.

    Deshalb meine Frage ob es noch das SharpDX Toolkit gibt ?
    Das soll ja ähnlich einfach wie GDI+ handzuhaben sein, oder irre ich mich ?(
    Wenn es sowas für VB noch gibt, würde ich es gerne begrüßen :D

    Ob nicht eine Spielengine viel zu überdimensioniert ist ?
    In dem Fall ist eine Spieleengine tatsächlich der falsche Ansatz. Die sind auch meiner Ansicht nach nicht für Konstruktion geeignet.

    Ich kenne keine Software, die für CAD das Fundament bereitstellt und ich würde in dem Fall tatsächlich zu DirectX oder Vulkan greifen. Dir jetzt noch fehlenden Erfahrungsschatz kannst du dir ja aneignen.

    Viele Grüße
    ~blaze~
    Unterstützung von sinnvollen Standards. Endlich den Leuten beizubringen, dass der einzige Grund warum DirectX überhaupt noch existiert ist, weil MS Werbung gemacht hat und die Menschen sich beinflussen lassen haben. Jetzt gibt es eine variable Pipeline das ist ganz toll -> OpenGL och das haben wir schon seit 5 Jahren. MS jetzt gibt es die größte Neuerung der Grafikkarten seit langem: Tesselation->OpenGL och das haben wir seit 4 Jahren.... :D
    Ansonsten bietet OpenGL bis auf Plattformunabhängigkeit nicht viele Vorteile.
    Vulkan hat jedoch einige andere Zusätzliche Vorteile wie z.B. die Unabhängigkeit von SPIR-V was es schön Sprachen unabhängig macht. Die Offensichtliche größere Performance und kommende hilfreiche Debugtools, die durch die Offenheit wesentlich besser und schneller ausgeweitet werden wird. Außerdem die Unterstützung von einigen Firmen die entweder in der Spiele oder HW/Grakaentwicklung sind.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Wie sieht es dann aus, wenn das Programm mal auf einem anderen PC laufen soll (bei OpenGL und Vulkan) ?
    DirectX ist ja auf den meisten PC's installiert.

    Sollte ich jetzt das VulkanSharp oder doch einen Wrapper für OpenGL verwenden ?
    Kann mir jemand sagen, was "einfach" zu verwenden ist und gut funktioniert :rolleyes: .
    Damit ich mich auf die Suche nach Beispielen machen kann, wie es funktioniert.

    Viele Grüße :)
    OpenGL und Vulkan wird im Gegensatz zu DirectX direkt mit den Grafikkartentreibern mit installiert, also hast du tatsächlich noch ein Vorteil der beiden gefunden :P

    Aufwand von wenig nach viel:
    1. DirectX
    2. OpenGL
    3. Vulkan

    Gut funktioniert kann man schwer sagen. Vulkan ist noch in der Anfangsphase dürfte aber bereits relativ gut funktionieren, ist aber aktuell auch noch nicht so weit verbreitet, weil es für ältere Grafikkarten eben nicht gemacht wird(aber ist ja bei DirectX12 oder OpenGL 4.5 auch nicht anders).

    OpenGL/Vulkan haben tatsächlich noch nen Nachteil: Sie kümmern sich wirklich ausschließlich um Grafik. Also sobald du Sound haben willst musst du auf irgendetwas anderes zurückgreifen, wobei das bei DX auch extra Komponenten sind, aber doch alle natürlich unter dem Produktnamen DirectX und entsprechend auch eine sehr ähnliche API.

    Ganz im Endeffekt würde ich mich denke ich trotzdem ein Grafikframework entscheiden, dass dir zumindest ein paar Dinge einfacher macht. Z.B.
    - MonoGame: monogame.net/
    - Achtung Eigenwerbung - engenious: github.com/OctoAwesome/engenious
    Beide lehnen an XNA an. Jedoch hab ich mich weniger Einschränken lassen und verwende ausschließlich OpenGL. Leider brauchst du für meins OpenGL 4.5(will ich aber irgendwann noch ändern).
    Beide Werben mit Platformunabhängigkeit, jedoch lüge ich im Gegesatz zu MonoGame nicht :P
    MonoGame wird bei Windows auf denke ich mehr Rechnern laufen, da es aktuell noch DirectX9 ist, deshalb wirst du aber auch auf moderne Features verzichten müssen, wovon ich zwei schon eingebaut habe(TextureArray/Computation Shaders). Performance technisch ist meine Engine auch bereits wesentlich besser zumindest wenn du bei beiden OpenGL verwendest. MonoGame mit DX gegen meine Engine hab ich nie direkt verglichen, war nur bei einem Projekt performanter, andere hab ich nie verglichen(aber das kann auch nur dieser Teil gewesen sein :D)

    Aber ich denke mit beiden kannst du erstmal gut Arbeiten. Persönlich würd ich dir ja meine Engine empfehlen, dann aber wiederum wenn etwas nicht funktioniert bin ich Schuld, also nimmst vlt. doch besser MonoGame und regst dich über die auf.

    Beides gibts außerdem über nuget :D
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich hab grad mal ein bisschen durch die Sources gestöbert, deine Engine scheint auf jeden Fall Animationen für Meshes zu unterstützen. Wie sieht das denn mit Bones aus? Ich bin auch auf die Unreal Engine gestoßen. Die Resultate da sehen echt gut aus, aber so wie die C++ verunstalten geht gar nicht. Die Tage werde ich mir mal Unity3D sowie MonoGame und Engenious angucken und dann ggf. selber nen Thread erstellen.
    Die Animationen muss ich zugeben sind noch total unoptimiert. Hab ehrlich gesagt auch wenig Lust an Animationen weiter zu programmieren, das ist nen Graus. Außerdem hab ich Probleme einige FBX zu Laden, frag mich nicht warum. Aus 3Ds Max exportierte gehen aus Blender wiederum nicht. Dabei wär mir Blender natürlich lieber. Aber MonoGame hat dabei genau so viele Probleme wie ich. Musst außerdem noch mehr selbst implementieren.
    Bones mit festen VertexGroups gehen natürlich mit richtigem Exporter, da der daraus dann entsprechende SubMeshes mit AnimationNode machen sollte, wobei man dann diese selbst manipulieren kann.

    Aber wer Bones will sollte mMn weder MonoGame noch meine Engine nutzen.
    Also für @Gonger96 würd ich sagen UE > Unity. Denn Unity verunstaltet C# ebenso. Also denk ich bist mit UE besser bedient :D
    Edit: Ich hab aber beide nur mal angeguckt, nie probiert nen richtiges Projekt zu starten.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jvbsl“ ()