Ansicht umschalten
Avatar von pylo
  • pylo

134 Beiträge seit 26.06.2018

Re: Bei 3dfx muss ich immer sofort an Glide denken

/mecki78 schrieb am 05.08.2021 17:02:

Was viele Gamer bis heute nicht wissen: Die Schnittstelle Glide ist in Wahrheit einfach nur ein Subset von OpenGL. 3dfx ist einfach her gegangen, hat sich OpenGL 1.1 geschnappt und alle Funktionen rausgeworfen, die für Gaming nicht sinnvoll erschienen oder sehr teuer in Hardware umzusetzen waren. Das Subset, dass dann übrig blieb, das wurde Glide getauft (GL von OpenGL, also GLide, angelehnt an GL-lite, etc.)

Daher habe ich nie verstanden, warum alle Gamer, die "Glide" damals achso geil fanden später auf OpenGL geschimpft haben ("drecks API") und Direct3D so in den Himmel gelobt haben. Wäre Glide nicht eingestellt worden, wäre es über die Jahre immer mehr zum vollwertigen OpenGL geworden. Und es zeigt mal wieder, das OpenGL sehr wohl eine brauchbare Game API hätte sein können.

Denn auch die berühmte Langsamkeit von OpenGL lag nie an der API an sich, denn OpenGL ist nur eine Schnittstelle. Eine Schnittstelle ist weder langsam noch schnell, diese Attribute treffen höchstens auf deren Implementierung zu und das viele OpenGL Implementierung Mist waren ist nicht die Schuld der Schnittstelle. Das OpenGL hätte viel schneller sein können, das sieht man heute z.B. daran, dass es ja OpenGL-zu-Vulkan Wrapper gibt und lässt man OpenGL Code über so einen Wrapper laufen, dann läuft der oft deutlich schneller, als wenn man ihn direkt über den OpenGL Treiber laufen lässt.

Damit ist aber belegt, hätte man den OpenGL Treiber mehr wie den Vulkantreiber implementiert, dann wäre auch OpenGL deutlich schneller gewesen (schließlich hätte man ja auch hier mit einem Wrapper um irgendwas anders arbeiten können, wie gesagt, OpenGL spezifiziert nicht die Arbeitsweise von Hardware und Software). Aber die Grafikkartenhersteller haben eben nur Entwicklungsressourcen in die Verbesserung ihrer Direct3D Treiber gesteckt und OpenGL sehr stiefmütterlich behandelt und deswegen war OpenGL oft langsamer. Die API selber kann da gar nichts für und würde man Vulkan genauso schlecht implementieren, dann wäre es auch genauso langsam.

/Mecki

OpenGL war schon extrem langsam. Zumindest damals. OpenGL ist zwar eine Schnittstelle und keine Implementierung, aber die Auslegung einer Schnittstelle gibt einen strikten Rahmen für konkrete Implementierungen vor, wie effizient sie höchstens implementiert werden können. OpenGL in den Glide-Zeiten war das perfekte Beispiel, wie man performante Schnittstellen für Grafik *nicht* auslegen soll. Siehe Immediate Mode als bestes Beispiel. Glide hat zumindest teilweise Abhilfe geschaffen. Dadurch, dass Glide viele irrelevante Sachen für Gaming rausgeschmissen hat, hat sich das best-case Software-Overhead einer Implementierung wesentlich reduziert. Relevantes Keyword: State Tracking. Natürlich hatte aber Glide durch das ursprüngliche OpenGL-Design auch seine Grenzen, wodurch sie auch starb und Direct3D übernommen hat. (Ein anderer Grund für die rasante Adoption von Direct3D war, dass OpenGL nur sehr langsam und extrem verzögert mit neuen APIs für moderne Hardware-Fähigkeiten ausgestattet wurde, während Microsoft relativ schnell mit neuen Direct3D-Versionen nachgezogen hat).

Viele Design-Defizite von OpenGL wurden später durch verschiedene sog. Extensions gelöst. Um beim selben Beispiel zu bleiben, niemand verwendet Immediate Mode heute, sondern Vertex Buffer Objects. Erst durch dieses und viele andere "neue" Extensions konnte OpenGL mit der Zeit die Performance erreichen die du heute kennst. Diese Extensions kamen aber viel zu spät. Um Jahre viel zu spät.

Einige viele von den wichtigsten dieser Extensions wurden in späteren OpenGL-Versionen verankert. Andere auch sehr viele blieben optional. Niemand kann heute eine zeitgemäße schnelle Applikation ohne diese Extensions entwickeln. Das bedeutet, OpenGL von heute hat nichts mehr mit dem OpenGL von den Glide-Zeiten zu tun. Du kannst eine Vulkan-Wrapper-Implementierung von heute überhaupt nicht als Beispiel nutzen, wie schnell hätte OpenGL damals werden können. Würden Applikationen über dieses Vulkan-Wrapper nämlich nur die OpenGL APIs verwenden, die damals tatsächlich zur Verfügung gestanden sind, wärst du nicht mehr zufrieden mit der Performance, nicht einmal wenn du dich auf die damaligen Hardwarefeatures beschränkst,und nicht einmal mit den schnellen CPUs von heute.

Das Posting wurde vom Benutzer editiert (05.08.2021 21:18).

Bewerten
- +
Ansicht umschalten