Hallo Schrompf,
also deine Hingabe zu deinem Framework, dass du ueber so lange Zeit pflegst, beeindruckt mich, dass ich jetzt nach ca. 6 Jahren mal wieder etwas in diesem Forum zum Besten geben moechte
Ich selbst war ja immer ein Fan davon, bei einem Spiel alles von Grund auf selbst zu entwickeln, daher kann ich deine Leidenschaft denke ich gut nachvollziehen.
Mit meinem mittlerweile auf Eis gelegten Projekt
LLGL hatte ich 2015 versucht, mir eine neue Grundlage in Form eines Abstraktionsleyers zu schaffen, damit ein Umstieg auf neue 3D APIs etwas einfacherer werden soll.
Aber alleine so ein Abstraktionslayer, oder RHI (Render Hardware Interface), wie er bei der Unreal Engine heisst, ist ein grosses Unterfangen.
Sofern du aber nur
eine neue API anbinden willst, empfehle ich dir, dir die Zeit zu nehmen um dich in Vulkan einzuarbeiten.
Jedoch gleich vorab, und das ist natuerlich nur meine persoenliche Meinung: da laeuft leider vieles aehnlich schief wie mit OpenGL, vor allem was das Extension Chaos angeht.
Alles in allem ist es aber Zukunftssicher, bietet praktisch alle Features wie auch Metal und D3D12 (wobei die Khronos Group hier mal wieder Microsoft hinterher hinkt), aber vor allem kann man mit deutlich weniger Code sein Ziel erreichen!
Das mag erstmal nicht so aussehen, weil man zu Beginn sehr viel aufgeblasenen Code benoetigt, um ueberhaupt ein farbiges Dreieck auf den Bildschirm zu bekommen.
Hat man aber erst mal seinen Grafik Kontext usw. erstellt und seine Helferfunktionen und eigenen Abstraktionen zur Verfuegung, kommt man insgesamt mit deutlich weniger Code ans Ziel.
Es stimmt, die Barrier, Semaphores, Fences und Events sind eine grosse Umstellung von OpenGL und auch die RenderPasses aber allem voran die Pipeline State Objects (PSO) erfordern ein Umdenken gegenueber den alten APIs.
Mich persoenlich hatte zu Beginn gestoert, dass weder Vulkan noch D3D12 eine Funktion zum MIP-Map Generieren anbieten, wie z.B. `glGenerateMipmap()`, bis ich gelernt habe, dass das in modernen Engines ohnehin kaum in der Form genutzt wird.
Entweder werden die MIP-Maps schon beim Laden bereit gestellt und komprimierte Texturformate unterstuetzen ohnehin keine automatische MIP-Map Generierung (auch nicht in D3D11 oder OpenGL) oder die MIP-Maps werden in einer Spezialform generiert, z.B. Hi-Z maps, also keine konventionellen MIPs mit durchschnittswerten.
Lange Rede kurzer Sinn, es hat mich persoenlich zunaechst viel Zeit gekostet, um hier an vielen Stellen umzudenken, auch was das Binding von Ressourcen angeht, was primaer mit den PSOs und ResourceHeaps ablaeuft (nicht limitiert darauf, aber das scheint mir zumindest eine der Kernfunktionen zu sein).
Ich wuensche dir mit deinem Projekt weiterhin viel Erfolg!
Mit dem, was ich von dir auf den Devmanias vor einigen Jahren gesehen habe, habe ich keinen Zweifel daran, dass du diese API rocken wirst
Herzliche Gruesse aus den USA - jetzt wisst ihr warum die schoenen Umlaute fehlen ;-)
Lukas