Warum sollte ich bei der Entwicklung vollständiger Anwendungen nicht glTools / glut verwenden?

7

Ich habe vor einiger Zeit angefangen, OpenGL mit OpenGL SuperBible, Fifth Edition , zu lernen, und ich habe Leute darüber streiten lassen, dass das Buch nicht wirklich lehrt, wie man OpenGL benutzt, sondern wie man OpenGL benutzt zwei der damit verbundenen Wrapper-Bibliotheken, glut und glTools.

Mir wurde auch gesagt, dass Glut niemals für vollständige Projekte verwendet werden sollte, aber es gab keinen gültigen Grund für das Argument.

Meine Frage ist warum und wann sollte ich die glTools / glut Bibliotheken nicht verwenden und was soll ich stattdessen verwenden?

Gabriele Cirulli
quelle

Antworten:

8

GLTools und GLUT sind nicht dasselbe. GLUT ist für den Umgang mit Dingen außerhalb von OpenGL verantwortlich. GLUT erstellt und verwaltet ein Fenster und einen OpenGL-Kontext. Das eigentliche Material, das in diesem Kontext vor sich geht (auch bekannt als: OpenGL), liegt nicht in der Verantwortung von GLUT.

Maik hat bereits die Gründe behandelt, warum Sie GLUT in ernsthaften Anwendungen nicht sehen. GLTools ist eine andere Sache.

GLTools ist nur ein Framework, ein Wrapper für OpenGL-Inhalte. Es gibt viele Gründe, es nicht für ernsthafte Arbeiten zu verwenden:

  1. Es ist ineffizient. Wenn es auf die Leistung ankommt, sollten Sie sie umgehen.
  2. Es ist nicht sehr gut. Nehmen Sie zum Beispiel den GLShaderManager. Es lädt entweder die Shader oder gibt 0 zurück. Wenn ein Compiler- / Linker-Fehler vorliegt, gibt es keine Informationen dazu. Ja, es schreibt das Protokoll in stderr, aber nicht jeder hat stderr an eine sichtbare Stelle weitergeleitet. Ausnahmen sind eher schwer zu ignorieren.

Ich habe Leute darüber streiten lassen, dass das Buch nicht wirklich lehrt, wie man OpenGL benutzt, sondern wie man zwei der damit verbundenen Wrapper-Bibliotheken benutzt

Dies ist eine Nebensache, aber im Allgemeinen ist das Problem in dieser Hinsicht recht einfach. 5. lehrt Sie, das Framework zu verwenden, bevor Sie erklären, was dieses Framework tut. Sie lernen also, wie Sie das Laden von Netzen verwenden, wie Sie den Code zur Generierung der perspektivischen Matrix, die Standard-Shader usw. verwenden, bevor Sie lernen, was ein Shader ist, welche Vertex-Attribute es gibt und so weiter.

Es handelt sich im Grunde genommen um eine Programmierung mit festen Funktionen für den ersten Teil des Buches. Es wird nur ein eigener Code mit festen Funktionen anstelle von OpenGLs verwendet.

Es ist nicht so, dass es ein Framework verwendet, das das Problem ist. Das Problem ist, dass das Framework verwendet wird, um Details zu verbergen, die nicht erklärt wurden, anstatt Details zu verbergen, die für die aktuelle Lektion unwichtig sind. Nachdem Sie den Shader-Ladecode einige Male gesehen haben, müssen Sie ihn nicht mehr sehen, sodass er eine Bibliotheksfunktion sein kann.

Ein besserer Weg, das Buch zu strukturieren, wäre gewesen, die Teile des Frameworks zu verwenden, nachdem die zugrunde liegenden OpenGL-Aufrufe gezeigt wurden, die das Framework ausführt. Die Standard-Shader sind in Ordnung, sollten jedoch erst verwendet werden, nachdem der Benutzer die Shader manuell in Aktion gesehen hat. Gleiches gilt für das Laden und Handhaben von Maschen, Texturen usw.

Nicol Bolas
quelle
Vielen Dank, sehr erschöpfende und aufschlussreiche Antwort.
Gabriele Cirulli
Ich habe das gleiche Gefühl bei den GLTools. Es hat nicht erklärt, was die Bibliothek macht, was mich am Anfang verwirrt hat. Ich habe versucht herauszufinden, was zum Teufel die "Stock Shader" waren. Dann wurde mir klar, dass diese von den Autoren erstellt wurden. Plötzlich werden die Interessen an dem Buch erheblich reduziert. Ihr Vorschlag bei der Rekonstruktion des Buches ist ziemlich gut.
Robert Wang
3

Das Argument gegen Überlastung in großen Projekten ist, dass Sie keinen Zugriff auf die Anwendungsschleife haben und diese daher nicht an Ihre Anforderungen anpassen können. Alles, was es hat, sind einige Rückrufe, die durch Überflutung ausgelöst werden, aber Sie haben nicht viel Kontrolle darüber.

Der Zweck von glut besteht jedoch darin, Demos zu erstellen und Apps einfach und plattformübergreifend zu testen, ohne dass hässlicher Betriebssystemcode zum Erstellen von Fenstern verwendet werden muss. Dies ist nur eine Frage einiger Codezeilen, die glut verwenden.

Maik Semder
quelle
Ist es möglich, dass die Verwendung von Glut auch die Portabilität beeinträchtigt?
Jonathan Connell
1
@ 3nixios Glut behauptet, dass es "auf allen PC- und Workstation-Betriebssystemplattformen funktioniert". Wenn dies Ihre Zielplattformen sind, sind Sie in
Bezug auf die
Ich habe in der Tat über jede Plattform nachgedacht, die von GLUT nicht unterstützt wird. Ich habe mich gefragt, welche Auswirkungen eine Änderung des Ziels am späten Tag haben könnte.
Jonathan Connell
1
@ 3nixios Ein später Wechsel von PC / Workstations zu Handys ist praktisch unmöglich, ohne viel Code UND Assets neu zu schreiben. GLUT wird Ihr kleinstes Problem sein, wenn Sie es trotzdem versuchen :)
Maik Semder
Oh vergiss ...
Jonathan Connell