konkretor schrieb:
Direct X 11 ist auch bald Retro ist aus dem Jahr 2009 und wir nutzen es immer noch.
Was aber auch daran liegt, dass DX11 zum Teil einfach ein anderes »Konzept« verfolgt, als DX12.
konkretor schrieb:
Version 12 schimmelt ja vor sich hin
Nicht wirklich, da bei neuen Engines sowohl Vulkan als auch DX12 immer Verwendung finden, da die Entwickler langsam endlich lernen ihre Engines besser zu parallelisieren.
mibbio schrieb:
Diese Low-Level APIs (DX12, Vulkan) haben halt auch den Vorteil, dass man da sehr viel hinsichtlich Performance-Optimierung selbst in der Hand hat.
Wobei man hier unterscheiden muss etwas. Die »Abstraktion« der GPU ist unter DX11 als auch DX12 als auch OpenGL oder Vulkan doch recht ähnlich.
Das »Optimierungspotential« von DX12 und Vulkan ist aufseiten der »GPU« eher überschaubar, sondern liegt primär im Bereich der CPU und damit verbunden bei den »Verwaltungsaufgaben«. Und gerade parallele Programmierung - hier speziell das Multithreading - ist selbst für erfahrene Entwickler durchaus eine ziemlich harte Nuss. Viele »Programmiersprachen« im Bereich Highlevel bieten heute dann Möglichkeiten mit asynchroner Ausführung und da dann auch Befehle, dass im eigentlichen Programm auf die Aufgaben warten kann, nur sind diese Konzepte recht starr und unflexibel, gut um Aufgaben passend zu verteilen.
Bei Engines benötigt man aber wesentlich mehr Kommunikation zwischen den Threads und da fängt halt das Problem wirklich an.
mibbio schrieb:
Bei High-Level-APIs geht man halt immer den Kompromiss ein zwischen "Bequem zu verwenden" und "nicht maximal mögliche Performance".
Nicht ganz, es hat nicht nur etwas mit Bequemlichkeit zu tun, sondern da spielen einige Aspekte mehr mit rein, darunter auch die Sicherheit.
Highlevel-APIs als auch Highlevel-Sprachen sollen möglichst viele der grundlegenden, immer wiederkehrenden und sich stark ähnelnden Aufgaben vom Entwickler abnehmen. Jeder Informatiker/Entwickler wird während seiner Ausbildung als auch dem Studium mit den Grundlagen der Ressourcenverwaltung konfrontiert, ebenso, wie man über eine Schnittstelle mit anderer Hardware kommuniziert und Steuerbefehle absetzt und Antworten auswertet.
Das sind alles eigentlich sehr simple Aufgaben, aber eben weil sie so einfach sind, passieren hier auch gerne mal die meisten Fehler, weil es mehr »fleiß« ist, als Spaß.
Und sowohl DX12 als auch Vulkan versuchen genau hier auch einen Kompromiss zu finden, in dem man in den wichtigen Bereichen mehr Freiheiten hat - mehr Threads beim Render - kein Main-Thread mehr - Möglichkeiten die Ressourcen der GPU flexibler zu verteilen - Compute, Graphic usw.
Gleichzeitig sollen aber kritische als auch einfache Aufgaben, die jedoch sehr fehleranfällig sind, vom Entwickler ferngehalten werden.
DX12 als auch Vulkan sind auch - wenn man mal alles anlegt, was »low level« aus macht - nicht wirklich eine Low-Level API, aber eben auch keine High-Level API, sondern bewegt sich dazwischen.