Da wir für manche Funktionen/Features mehrere Fenster gebrauchen könnten, sollten wir überlegen, wie wir die Architektur sinnvoll abwandeln, um das zu unterstützen. Die Core-Instanz sollte statt einem Fenster eine beliebige Menge verwalten können (0 bis N). Jedes Fenster benötigt eine eigene Swapchain! (Es ergibt eigentlich keinen Sinn, dass aktuell die Swapchain größtenteils vom Core verwaltet wird, obwohl es im Grunde die Schnittstelle zwischen Fenster und Graphics-Pipeline darstellt.)
Abhängigkeiten überarbeiten
Fenster variabel handhaben
Swapchains an Fenster binden
IO events abhängig vom aktiven Fenster aktivieren/deaktivieren
Aktuelles Beispiel: Derzeit werden alle queue-flags immer benötigt, egal welche man braucht. In der compute gruppe haben wir festgestellt, dass man zuverlässig einen crash auslöst, wenn man bei der erstellung des cores eine der vk::QueueFlagBits::* weglässt.
Ebenso kann "VK_KHR_swapchain" nicht weggelassen werden und wir müssen ein Fenster erstellen und die window handle übergeben, obwohl hier kein Fenster gebraucht wird.
Ich würde vorschlagen, wir trennen die Window Abhängigkeit vom Core möglicherweise ganz. Man könnte immernoch bei Befehlen, die Zugang zum Window oder der jeweiligen Swapchain brauchen, dieses als Argument mitgeben.
Es wäre auch eine Möglichkeit einen WindowManager mit Handles ähnlich wie an vielen anderen Stellen im Framework einzubauen. Das macht es vermutlich einfach die Windows als Argument zu übergeben, da wir uns keine copy- und move-Operationen ausdenken müssen. ^^'