Seite 1 von 1

Vulkan oder OpenGL als Grafikinterface

Verfasst: 23.11.2025, 18:19
von Andy16823
Hallo, ich habe mich in den letzten Wochen etwas mit Vulkan beschäftigt und muss sagen, dass ich recht gut damit zurechtkomme. Nach einer gewissen Einarbeitungszeit ist es auch recht angenehm, damit zu arbeiten. Allerdings habe ich gemerkt, dass Vulkan z. B. nicht vollständig auf meinem Laptop mit Intel-Grafikkarte unterstützt wird. Nun stellt sich mir natürlich die Frage, inwieweit es Sinn macht, dass ich Vulkan als „Haupt“-Interface nutze, oder ob ich noch bei OpenGL bleibe und ein optionales Vulkan-Interface bereitstelle. Ich meine, das volle Potenzial von Vulkan nutze ich aktuell eh nicht (Multithreaded Rendering, Raytracing etc.). Ich würde da gerne eure Meinung hören.

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 23.11.2025, 21:28
von Schrompf
Ich weiß nicht, ob Du auf dem Level von API überhaupt merkst, dass die Vulkan-Unterstützung unvollständig ist? Ich meine die Funktionen: das ist doch so enorm lowlevel, dass da am Ende gar nicht viel fehlen kann, ohne dass man kein Dreieck aufn Screen kriegt? Vielleicht war's nur ein Missverständnis irgendwo?

Aber ist nur ins Blaue geraten. Ich hocke noch auf DX9 und will irgendwann mal zu Vulkan wechseln, weil sich doch so gaaanz langsam die UseCases häufen, wo mir die antike API im Weg ist. Und dann lass ich OpenGL aus, das ist mir zuviel globaler State und zuviel Extensions, deren Überschneidungsbereiche dann unwägbaren Support-Overhead verursachen.

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 23.11.2025, 22:30
von Jonathan
Ich benutze auch OpenGL, würde aber beim nächsten mal Vulkan nehmen...

Ich pflege mein Framework jetzt schon seit vielen Jahren, und naja, die Idee ist ja das dann zum Spielemachen zu benutzen. Ich schreib also nicht alle 2 Jahre eine neue 3D Engine. Wenn du jetzt mit den OpenGL Features zufrieden bist und jetzt auf deiner Intelgrafikkarte irgendwas mit Vulkan nicht geht, was du eigentlich dann mit Vulkan ausprobieren wolltest, dann kannst du natürlich OpenGL verwenden. Aber, wenn du grob in einer ähnlichen Situation bist wie ich, dann wirst du erstens vermutlich bald was wollen, was OpenGL nicht kann (und das wird ja nicht mehr weiterentwickelt, das wird es also nie können) und zweitens, vermutlich deine Intelgrafikkarte ausgetauscht haben, bevor du deine Engine neu schreibst.

Ich denke mir hier und da immer mal, dass ich ja doch gerne Vulkan hätte, aber halt immer in so Situationen in denen ich gerne innerhalb von 2 Wochen ein neues Feature einbauen will. Ein Wechsel auf Vulkan würde aber für mich aktuell wohl monatelanges Neuschreiben bedeuten, und das war mir noch keines der geplanten Features wert.

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 24.11.2025, 07:24
von Andy16823
Ja das mit unvollständig ist eher so das die Validation Layer meckern das es bestimmte Extensions die man benötigt nicht existieren oder der Treiber ein bestimmtes Format nicht unterstützt etc. Mir geht es bei Vulkan vor allem um die Zukunft Sicherheit des Projektes. Wie Jonathan geschrieben hat wird OpenGL nicht mehr Aktiv weiter entwickelt.

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 24.11.2025, 08:55
von Jonathan
Was mich vielleicht, als jemand der Vulkan nie testete, interessieren würde: Was ist denn jetzt schwieriger, OpenGL oder Vulkan?

Anfangs hieß es, Vulkan wäre so lowlevel, man bräuchte tausende Zeilen Code bis zum ersten Dreieck, ja sogar dass in Zukunft nur so 3-4 große Middleware Hersteller Vulkan benutzen werden und der Rest bloß deren Middleware verwendet (es schreibt sich ja auch heute niemand seinen eigenen OpenGL Treiber) weil alles so komplex ist. Aber sowas hab ich schon echt lange nicht mehr gehört. Ein bisschen in Gegenteil, Vulkan hat halt einen großen, globalen State, und das macht Debuggen einfacher, weil man sich nicht in komischen State-Changes verhaspeln kann, und immer ganz genau sehen kann was passiert und wo der Fehler liegt. In OpenGL mag das erste Dreieck flott gehen, die nächsten 3 Features hat man auch schnell dazu geschaltet, aber wenn man dann eine komplette 3D Engine schreibt, gibt es am Ende doch echt viel zu managen und dabei macht man immer etwas falsch...

Na, wie gesagt, das sind so Dinge die ich über die Jahre aufgeschnappt habe. Hat hier jemand einen besseren, direkten Erstehand-Vergleich?

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 24.11.2025, 11:16
von Matthias Gubisch
Ich hab zwar keine Erfahrung mit OpenGL, aber dafür mit Vulkan, DirectX 9/10/12

Ich fasse hier Vulkan und DX12 mal als LowLevelAPIs zusammen weil sie doch in vielen Punkten sehr sehr ähnlich sind.
1000e Zeilen bis zum ersten Dreieck sind es nicht ganz, aber ein paar hundert schon.
Fakt ist dass man bei diesen LowLevelAPIs sehr viel selber machen muss was einem ein DX9-11 und OpenGL einfach der Treiber abgenommen hat. Als besonders nervig und komplex finde ich hier die Synchronisierung, und zwar sowohl CPU<->GPU als auch GPU<->GPU, hier helfen zwar die Validation Layer recht gut, leider finden die aber auch nicht alles und es kann mitunter mühsam werden das richtig hinzubekommen.
Descriptor Handling war unter Vulkan auch relativ grausam (vor allem wenn man bindless bleiben möchte), das soll aber mittlerweile besser sein, hab ich aber noch nicht getestet da ich vor knapp 2 Jahren von Vulkan auf DX12 gewechselt bin wegen eben jenem Descriptor Handling...
Wenn man sich aber für die vielen Dinge mal passende Abstraktionen geschrieben hat lässt es sich ganz gut benutzen.

Man muss sein Mental Model ein wenig umstellen, wenn man versucht die "modernen" APIs genauso zu nutzen wie die "alten" dann wird man performancetechnisch nichts gewinnen, wenn es blöd läuft sogar verlieren.

Positiv: der Treiber versteckt nichts mehr vor einem
Negativ: nachdem der Treiber nichts mehr vor einem Versteckt muss man halt auch alles selber machen....

OpenGL oder auch DirectX 9/10 würde ich für ein neues Framework nicht mehr nutzen. DirectX11 ist oft eine Alternative, aber dann bleibt man halt an Windows gebunden...
Man muss die LowLevelAPIs auch nicht direkt benutzen, es gibt auch Abstraktionen wie z.B. WebGPU die einem das Handling ein wenig angenhemer machen ohne dass man auf die Features verzichten muss.

An Andi: welche VK extension fehlen denn? Um alles was mit OpenGL geht mit VK zu haben sollte eigentlich ausser dem Core Profil nichts nötig sein.
Wenn du Raytracing oder ähnliches meinst, das wirst du halt mit OpenGL nie bekommen....

Re: Vulkan oder OpenGL als Grafikinterface

Verfasst: 24.11.2025, 12:32
von antisteo
Positiv auch: der OpenSource-Linux-Treiber von Vulkan ist performance-technisch auf demselben Level wie der Windows-Treiber. Früher war es so, dass der OpenGL-Treiber ~10% der Performance nur erreicht hat, weil einfach die Manpower nicht reingesteckt wurde, ein ordentliches Instruction Resorting und Sync zu implementieren. Jetzt nutzt man einfach das, was die Spiele-Engines bauen.

Und noch ein Wort zu den hunderten Zeilen: In jedem komplexeren Projekt gehen diese 100e Zeilen Sync-Code irgendwann unter. Man hat einmal seine Rendering-Pipeline gebaut und danach programmiert man vor allem im Bereich Gameplay und Level-Aufbau.

Und noch mal allgemein zum Thema: Ich sehe für den Desktop kaum Zukunft. Irgendwann wird der Overhead fürs Web so marginal sein, dass alle Anwendungen nur noch als WebGPU / ASM-JS ausgeliefert werden und niemand mehr ein "Betriebssystem" braucht. (ihr wisst, wie ich das meine!)