OpenGL Core und Kompatibilität [geschlossen]

8

Ich versuche OpenGL zu lernen. Ich habe Erfahrung mit C und C ++, baue eine Umgebung und all diesen Jazz auf, aber ich versuche, einen guten Ausgangspunkt zu finden.

Ich bin mir der festen Funktionspipeline bewusst, die in OpenGL & lt; = 2.1 vorherrschend war, und es scheint relativ einfach zu sein damit anzufangen. Das Core-Profil, das OpenGL in OpenGL & gt; = 3.1 pusht, lässt mich jedoch aufgrund von Abwertungen vom FFP wegbleiben. Aber ich bin verwirrt darüber, wie alles in 3.1 und höher funktioniert. In 2.1 und darunter hast du dein glBegin (GL_WHATEVER) und glEnd (), wenn du Formen zeichnest. Das erste, was ich beim Durchsehen der Core-Profil-API bemerkt habe, ist, dass diese beiden Funktionsaufrufe weg sind. Mir ist klar, dass es wahrscheinlich einen einfachen Ersatz gibt, aber es ist ziemlich schockierend, etwas (scheinbar Nützliches) zu sehen, das aus solch einer grundlegenden Aufgabe herausgenommen wurde. Es scheint fast so, als würde man printf () von der c-Standardbibliothek ablehnen. Und wenn ich das neueste Red Book durcharbeite, benutzen sie immer noch den alten veralteten Code, der mein Denken weiter verwirrt.

Beim Durchlesen verschiedener Antworten auf ähnliche Fragen sehe ich den typischen "Shader-basierten" oder "es ist alles mit Shadern gemacht" etc etc. Wenn ich ein einfaches weißes Quadrat auf einen schwarzen Hintergrund zeichnen möchte (das erste Beispiel im neuesten Red Book), ich verstehe nicht, wie ein Shader für das Zeichnen einer Box relevant ist. Sollten sie das nicht tun ... nun .. Schattierung? Ich habe mir vorgenommen, das Orange Book und das Blue Book zu kaufen, aber ich möchte kein Geld mehr für etwas ausgeben, das alles hinter einer Bibliothek (dem Blue Book) verbirgt oder etwas, das über die Programmierung eines Shaders spricht um einige Beleuchtungsaufgaben in einer 3D-Umgebung (dem Orange Book) auszuführen.

Also, wo fange ich an? Wie zeichne ich eine Box (oder einen Würfel oder eine Pyramide oder was auch immer) nur mit dem Kernprofil. Ich verlange hier kein Code-Snippet, ich suche ein ausführliches Tutorial oder ein Buch oder etwas, auf das mich jemand hinweisen könnte. Wenn dies zuvor beantwortet wurde und ich es nicht gefunden habe, leiten Sie mich bitte weiter.

    
user1219820 06.06.2012, 19:12
quelle

1 Antwort

12

Der Grund für die plötzliche "Komplexität" im Kernprofil ist die Tatsache, dass die Pipeline mit fester Funktionalität nicht repräsentativ dafür war, was die GPU tatsächlich für Sie tut. Ein großer Teil der Funktionalität wurde auf der CPU ausgeführt, und nur die eigentliche Zeichnung wurde auf der GPU ausgeführt. Das andere Problem mit der festen Pipeline ist, dass es eine verlorene Schlacht ist. Die feste Pipeline hat soooooo viele Knöpfe und Schalter! Es ist also nicht nur schmerzhaft kompliziert, es wird auch niemals mit der endlosen Nachfrage nach neuen Wegen zum Zeichnen von Szenen Schritt halten. Geben Sie GLSL ein, und Sie können der GPU genau sagen, wie Sie Ihre Szene zeichnen möchten. Dies verlagert die Macht auf den Entwickler und befreit jeden davon, auf OpenGL-Updates für neue Schalter / Knöpfe zu warten.

Nun zu Ihrer Frustration über den plötzlichen Verlust von glBegin und glEnd ... gibt es einfache Frameworks, die ihr Verhalten auf dem neuen Kernprofil nachahmen, und das ist gut so. Auch hier wird den Entwicklern die Entscheidung überlassen, wie sie sich der Pipeline nähern. Es ist jedoch nichts falsch daran, 3D auf dem FFP zu üben. Sie müssen zuerst 3D Mathematik und Konzepte lernen. Diese Konzepte gelten unabhängig von der API. (Matrix Math wird Ihr Leben sowohl in OpenGL als auch in Direct3D retten.) Also üben Sie zuerst mit einfachen Dreiecken und Farben. Dann bewegen Sie sich auf Texturen (mit Texturkoordinaten). Dann füge man Normalen hinzu (mit Beleuchtung). Nachdem Sie all diese Konzepte verstanden haben, hören Sie auf, glBegin / glEnd zu verwenden, und Sie beginnen große Mengen von Vertexdaten in Puffer zu puffern. Sie werden glDrawElements nicht so gut verstehen, wenn Sie glBegin / glEnd sowieso nicht verstehen. Also, es ist in Ordnung, auf diesen Tools zu lernen.

    
TheBuzzSaw 07.06.2012 17:58
quelle

Tags und Links