Was ist der Unterschied zwischen OpenGL 1.x und 2.x?

13

Gibt es ein gutes Tutorial, das den Unterschied zwischen OpenGL 1. * und 2. * zeigt?

Es wäre sehr hilfreich zu wissen, welche Funktionen ich nicht aufrufen sollte (wie glBegin (), nehme ich an).

t123
quelle
1
Lassen Sie mich Ihre Frage umformulieren. Was ist der Unterschied zwischen Fixed Function Rendering und Shadern?
EnabrenTane
3
Das ist jedoch eine ganz andere Frage.
Jari Komppa

Antworten:

11

Die Einstiegsseite von OpenGL.org enthält eine Übersicht mit zahlreichen Links zu verschiedenen Tutorials.

Kurz gesagt, OpenGL 2.0 bewegt sich zwischen der Welt der festen Funktionen (1.x) und der vollständig programmierbaren Welt (2.x +). Sie können weiterhin alle Funktionen von OpenGL 1.x verwenden, während Sie Shader hinzufügen. In Zukunft (3.x +) werden jedoch alle Arten von alten Systemen mit festen Funktionen allmählich veraltet. Daher ist es möglicherweise besser, einen sauberen Start zu haben, als beide Welten zu mischen.

Ich bin auch überrascht, dass dies vorher nicht gefragt wurde. Oder zumindest konnte ich es bei einer schnellen Suche nicht finden.

Jari Komppa
quelle
Ich kann kein versionsspezifisches Tutorial finden. (außer 3.0)
t123
Es gibt viele Links von dieser Seite unter "Tutorials und Anleitungen", aber im Grunde haben Sie die Wahl zwischen OpenGL 1.x und "etwas anderem".
Jari Komppa
@ tm1rbrt: Sie finden keine spezifischen Tutorials für 2.1, da alle gültigen 1.x-Tutorials noch gültige 2.1-Tutorials sind. Der einzige Grund für eine Unterbrechung bei 3.x ist, dass dort APIs entfernt wurden. Wenn Sie auf der Suche nach Shader-basierten 2.1-Tutorials sind, können Sie die Lighthouse3D-Tutorials verwenden. Beachten Sie jedoch, dass es 3.x-Hardware seit 2006 gibt und diese bereits in Motherboards und sogar CPUs integriert ist. Die Zukunft liegt also nicht in der 2.x-Welt. Zukünftige Tutorials werden sich in der Regel auf 3.x und höher konzentrieren.
Nicol Bolas
3

OpenGL-Versionen sind im Großen und Ganzen nicht mit Direct3D-Versionen vergleichbar. Ihr alter Code funktioniert weiterhin mit den neuen Versionen (mit einer Ausnahme). Daher funktioniert OpenGL v1.4 unter OpenGL 2.1 einwandfrei. OpenGL-Versionen sind Additionen, keine Subtraktionen.

OpenGL 2.0 und 2.1 fügen Shader in der OpenGL Shading Language hinzu. Sie fügen auch einige andere Features hinzu, wie Gleitkomma-Texturen, Nicht-Zweierpotenzen-Texturen und so weiter. Die vollständige Liste ist in der OpenGL 2.1-Spezifikation selbst verfügbar . Schauen Sie sich einfach die Abschnitte "Version" an. Sie erfahren, was sich gegenüber der vorherigen Version geändert hat.

Die einzige Ausnahme von der Regel zu API-Änderungen ist OpenGL 3.1 (yes, 3.1, not 3.0). In OpenGL 3.0 wurde eine Reihe von APIs als "veraltet" bezeichnet. Dies bedeutet, dass der ARB, der für OpenGL zuständige Ausschuss, diese Funktionen aus späteren Versionen entfernen könnte. Diese Entfernung erfolgte in OpenGL 3.1. Die 3.0-Spezifikation enthält eine große Liste veralteter Inhalte, und die 3.1-Spezifikation wird entsprechend gekürzt.

Beachten Sie, dass Sie sich nicht darum kümmern müssen (zumindest unter Windows und Linux. MacOSX ist anders). Sie können problemlos im Kompatibilitätsmodus arbeiten, in dem alle zuvor entfernten Funktionen wiederhergestellt werden. OpenGL-Implementierungen müssen keine Kompatibilitätskontexte unterstützen (und Mac OS X Lion nicht. Es unterstützt entweder den 2.1- oder den 3.2-Kern, wenn Sie dies wünschen), aber alle von ihnen tun dies dennoch. Nur aus Gründen der Abwärtskompatibilität mit älteren Anwendungen.

Nicol Bolas
quelle
Können Sie etwas über OpenGL 4. * hinzufügen?
Kromster sagt Unterstützung Monica
@Krom: Es gibt nicht viel zu sagen. Genau wie beim Übergang von 1.x zu 2.x wurde nichts entfernt.
Nicol Bolas
0

Ich glaube, dass es Tutorials für opengl 1.x und 2.x gibt, aber es wird höchstwahrscheinlich keine Tutorials geben, die zeigen, wie sich diese von den Funktionen, der Benutzerfreundlichkeit usw. unterscheiden.

Suchen Sie am besten nach Tutorials für die jeweilige OpenGL-Version, suchen Sie nach ähnlichen Tutorials und vergleichen Sie sie selbst.

LizardGamer
quelle
Ernsthaft, wer stimmt meine Kommentare nach dem Zufallsprinzip ab?
LizardGamer
Warum die Downvotes hier? Keine gute Antwort, aber Abstimmungen? Nicht sicher. Die Frage trully will etwas nicht sehr üblich ... Tutorial zum Zeigen von Unterschieden, das ist meist nicht, was Tutorials tun ...
Notabene
@LizardGamer Ich sehe, dass Sie vor ein paar Tagen zu gamedev.SE gestoßen sind, also möchte ich sagen: "Willkommen!". Allerdings sollten Sie die FAQ hier unbedingt lesen: gamedev.stackexchange.com/faq Diese Antwort ist ein perfektes Beispiel für die Art der Antwort, die Sie NICHT geben möchten. Versuchen Sie, sowohl mit Ihren Fragen als auch mit Ihren Antworten konkreter und auf jeden Fall konstruktiver umzugehen. Die FAQ sollen Ihnen helfen, den Zweck dieser Website und die Art von Inhalten, nach denen wir suchen, zu erkennen. Viel Glück!
Amplify91
@notabene Diese Antwort beantwortet die Frage nicht wirklich. Der einzige Vorschlag, den es gibt, ist im Grunde "Suche nach der Antwort". Offensichtlich tut das OP dies bereits, indem es hier eine Frage stellt.
Amplify91
@ Amplify91 Vielen Dank für die einzige Begrüßung, die ich habe, und ich habe bereits die FAQ gelesen, ich finde nicht, wie es ein Beispiel dafür ist, was ich nicht fragen soll? Außerdem beantwortet es die Frage, da ich keine Tutorials zum Vergleich von opengl
LizardGamer