Worklog SeeingSharp 2: Start

Für das Projekt Seeing# habe ich bereits sehr viele Stunden investiert. Begonnen mit dem 3D-Rendering ist das Framework über die Jahre sehr in die Breite gewachsen, etwa mit der Unterstützung für Video mit der Media Foundation oder einfachen Funktionen zur Wiedergabe von Musik und kurzen Sounds. Zudem habe ich öfters allgemeine Infrastruktur-Themen wie einen kleinen DI-Container, Übersetzungsfunktionen, etc. integriert. Der ursprüngliche Fokus auf 3D-Rendering ist dabei zum Teil stark verwässert. Aus diesem und anderen Gründen (siehe unten) habe ich mich dazu entschieden, einen größeren Breaking-Change zu machen und die Library grundsätzlich zu überarbeiten. Das Projekt befindet sich auf Github im Repository: https://github.com/RolandKoenig/SeeingSharp2. Bis Seeing# 2 aber die gleiche Funktionalität wie vorher Seeing# bietet, ziehen noch einige Wochen ins Land.

Klarer Fokus auf 2D-/3D-Rendering unter Windows

Der Fokus soll klar auf 2D- und 3D-Rendering stehen, ohne überflüssiges Beiwerk. Weiterhin beschränkt sich Seeing# 2 auf die Windows-Platform und damit auf die durch DirectX bereitgestellte Funktionalität. Andere Plattformen wie Linux, Android oder MacOS sind explizit nicht das Ziel. Müssen möglichst viele Plattformen verwendet werden, gibt es genug Alternativen, die einen Cross-Platform-Ansatz wesentlich besser hinbekommen als ich es jemals mit einem Hobby-Projekt realisieren könnte. Stattdessen integriert sich Seeing# besser in die Umgebung eines Windows-Systems und bietet hier eine stabile Grundlage für Applikationen. Andere Funktionen wie das Video-Rendering werden aus Seeing# entfernt oder zumindest in andere, optionale Libraries ausgegliedert.

Library für Applikationen, nicht für Games

Ebenfalls zum Thema Fokus gehört, dass sich Seeing# in Zukunft vollständig auf Windows Applikationen konzentriert und nicht als Basis für Games gedacht ist. Für Games gibt es deutlich bessere Frameworks, gegen die Seeing# niemals eine Alternative sein kann. Für kleinere oder größere 3D-Anzeigen in normalen Applikationen dagegen kann Seeing# durch geringe Abhängigkeiten, einfaches Setup und gute Integration in Desktop-Frameworks punkten. Weiterhin stehen auch virtuelle Umgebungen, Rechner/Server ohne direkte 3D-Unterstützung, Software-Rendering usw. im Fokus von Seeing#. Seeing# geht weiterhin nicht davon aus, dass im Entwicklungsteam eine breite Mannschaft von Grafikern und Designern vorhanden ist – Seeing# bietet stattdessen ein umfangreiches Set an Werkzeugen, um 3D-Content direkt aus dem Code heraus zu erzeugen.

SharpDX nicht mehr verschleiern

Eine weitere Änderung betrifft SharpDX. Seeing# benötigt zwar SharpDX als C#-Wrapper zu DirectX, bis jetzt habe ich aber Seeing# so aufgebaut, dass in der API nirgends etwas von SharpDX auftaucht. Vorteil daran ist, dass beispielsweise ein Update auf Direct3D 12 oder der Wechsel auf einen anderen DirectX-Wrapper nach außen hin nicht sichtbar ist. Nachteil dagegen ist, dass man wenig Flexibilität nach außen geben kann – außer man baut einen Wrapper um den Wrapper. Letzteres ist aber nicht wirklich effizient. Um hier den Weg zu mehr Flexibilität zu öffnen, ändere ich diesen Punkt ab Seeing# 2.

1 Gedanke zu „Worklog SeeingSharp 2: Start“

  1. Hallo Roland,
    das hört sich sehr gut an, was du da vorhast. Ich hab ja dein Seeing# in einer großen Windows Forms Anwendung erfolgreich im Einsatz. Alle Punkte, die du für Seeing#2 vorhast, gehen für mich genau in die richtige Richtung.
    Viel Spaß und viel Erfolg damit!
    Gruß Franz

    Antworten

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.