flaphoschi
Lt. Commander
- Registriert
- Jan. 2018
- Beiträge
- 1.707
Die Source Engine verwendet zum System hin OpenGL. Keine Emulation und keine externer Nachbau wie WINE, mit allen Nachteilen. Du hast recht mit dem „Übersetzer“. Es gibt eine TOGL Zwischenschicht, also irgend eine Art Layer. Technisch kann das in der HL2 ELF stecken, oder einer Library oder sonst was. Layer sind die Lösung für sauberer Trennung. Und Layer erhöhen die Komplexität und Indirektion, also sollte man sie vermeiden - sofern nicht nötig.TriggerThumb87 schrieb:Hallo. Das möchte ich versuchen zu korrigieren. Valve hat die Source-Engine, meines Wissens nach such die Hl-Engine, nicht portiert, sondern Valve benutzt einen D3D-OGL-Übersetzer.
Was wir wissen:
Es gibt TOGL
https://github.com/ValveSoftware/ToGL/blob/master/README.md
Das hat Valve früher für Direct9 auf OpenGL benützt. Sie haben also nicht zwei Implemetierungen nebeneinander eingebaut, sondern wohl übereinander. Okay, dann habe wir OpenGL. Aber das ist dann doch sicher langsamer? Indirektion und so. Nö. So einfach funktionieren Computer nicht:
https://web.archive.org/web/20130323204830/http://blogs.valvesoftware.com/linux/
Etwa in der Mitte wird es lustig. Die initiale, native OpenGL Implementierung ist unter Linux schneller gewesen. Da haben sie sich natürlich auch gefragt, was sie unter Windows für ein Problem haben. Batchverarbeitung der Direct3D Befehle war ineffizient. So kann es gehen
Was die Engine intern macht ist ein Implementierungsdetail. Vielleicht ruft das Ding erstmal init_glide(), dann init_direct3d() und schließlich init_opengl() auf. Ich würde als Programmierer lieber direkt init_opengl() aufrufen. Da wir jedoch keine Seiteneffekte habe, ist das für Linux nicht relevant. Wir brauche kein WINE, keine Direct3D und nur Mesa. Und die Performance passt auch noch. Gute Arbeit.
Wie Valve derzeit intern programmiert weiß ich leider nicht. Mich würde es sehr interessieren! Könnte mir denken, dass man angesichts von Vulkan die Schichtebenen aufgeben wird und nur Vulkan benützt. Eventuell dazu noch etwas für Legacysysteme.
Soweit ich weiß ist die Source Engine aus der GoldSrc (Quake1/2) hervor gegangen. Diese GoldSrc ist komplett OpenGL, und 3DGlide (3DFX?) und Softwarerender. Da dürfe man wesentlich schneller gewesen sein, vermutlich die POSIX/Linux APIs parallel eingebaut und angepasst. Vielleicht sogar eher mehr eingeschaltet, das sollte ID-Software ja Valve damals alles mit der Engine ausgehändigt haben?
Valve hätte sich wohl viel Arbeit gespart, wenn sie bei der Source Engine OpenGL beibehalten hätten. Hinterher ist man immer schlauer.
Zuletzt bearbeitet: