Unterschiede zwischen opengl 3 und opengl 4

10

Ich fange gerade erst mit der Spielprogrammierung an und möchte OpenGL lernen. Ich habe ein sehr gutes Tutorial von Grund auf gefunden, um mit opengl 3 zu beginnen, und ich frage mich, ob es einen großen Unterschied zwischen openGL 3 und openGl 4 gibt. Oder ich sollte fragen, macht openGL 4 openGL 3 überflüssig oder kann ich damit beginnen openGL 3 und dann kann ich zu openGL 4 wechseln?

Mansuro
quelle

Antworten:

12

Ich beginne damit, indem ich auf eine Erklärung der Funktionsweise von OpenGL-Versionen verweise . Kurz gesagt, OpenGL ist (im Allgemeinen) abwärtskompatibel, sodass der gesamte GL 3-Code bei GL 4-Implementierungen einwandfrei funktioniert.

Die OpenGL-Versionen der 4.x-Serie repräsentieren die Hardware der "Direct3D 11" -Klasse. Es zeigt die Funktionalität dieser Hardware. D3D10-Hardware wird durch die 3.x-Versionen von OpenGL dargestellt. "Umsteigen auf openGL 4" bedeutet also, niedrigere Hardware aufzugeben oder mehrere Rendering-Pfade zu haben.

Eine detaillierte Aufschlüsselung der tatsächlichen Funktionsänderungen zwischen 3.3 und 4.2 finden Sie in der 4.2-Spezifikation . Beachten Sie, dass viele Funktionen (separate_Shader_Objects, Shading_language_420pack, Textur_Speicher) nicht auf 4.x-Hardware beschränkt sind. Es handelt sich um API-Änderungen, auf die Sie über Erweiterungen auf 3.x-Hardware zugreifen können.

Die wichtigste Frage lautet: Was ermöglicht mir GL 4.x, was ich mit 3.x-Hardware nicht kann?

Tessellation ist wahrscheinlich das bekannteste Merkmal. Es ist wahrscheinlich auch das am wenigsten allgemein nützliche. Das heißt nicht, dass es nutzlos ist; Durch die ordnungsgemäße Verwendung der Tessellation können Details in Modellen verbessert werden. Aber zumindest für mich ist es nicht wirklich das Beste, was GL 4 zu bieten hat.

Shader-Subroutinen sind eine interessante Idee. Auf diese Weise können Sie verschiedene Fragmente von Shadern dynamisch zusammenfügen. Sie können eine Funktion mehr oder weniger an einen bestimmten Bindungspunkt in einem Programm anhängen. Die Spezifikation ist etwas schwer zu befolgen, aber es ist eine gute Funktionalität.

Ich würde sagen, dass das Laden / Speichern von Bildern wahrscheinlich das am meisten übersehene und dennoch leistungsstärkste Stück GL 4 -Funktionalität ist. Damit haben Sie die Möglichkeit, auftragsunabhängige Transparenz mit einer Leistung zu implementieren, die ungefähr so ​​gut ist, wie es OIT erreichen wird. Es gibt wahrscheinlich viele andere Verwendungszwecke für das Laden / Speichern von Bildern, aber es werden klügere Leute benötigt, um sie herauszufinden.

In GL 4 gibt es einige Kleinigkeiten. Dinge wie Unterstützung mit doppelter Genauigkeit und indirektes Rendern. Dies sind eher GPGPU-ähnliche Dinge, daher wird es in einem Spiel wahrscheinlich nicht viel nützen.

Im Allgemeinen ändert GL 4 jedoch nicht radikal, wie Sie Feature X von GL 3 implementieren.

Nicol Bolas
quelle
Ich muss nur sagen, Sie sind völlig falsch zu sagen, dass indirektes Rendern "GPGPU-artiges Zeug" ist. Es ist eine großartige Leistungssteigerung für jeden Renderer, der sonst viele Anrufe von der CPU aus tätigen würde, und eine großartige Funktion für Spiele.
Kaffee und Code