Was bedeutet GLEW tun und warum brauche ich es?
Okay, also ich weiß schon, warum ich brauche, GLEW, aber nur bis zu einem gewissen Punkt.
Wenn ich mit der modernen OpenGL-Zeug, wahrscheinlich ab version 3.0, und/oder benutze das Core-Profil, dann GLEW ist erforderlich, da ohne Sie die Kompilierung erzeugt Fehler wie glGenVertexArrays
wurde nicht deklariert.
So GLEW tut ein bisschen hintergrund-Arbeit, einschließlich der modernen OpenGL-Funktionen, die wir verwenden möchten, wohl.
Abgesehen davon, tut es etwas anderes? Auch, wie es funktioniert.
Als ein Beispiel, ist es zur Verbesserung des cross-Plattform-Kompilierung? (Erfordert weniger änderungen an code, wenn der Wechsel von Linux auf Windows oder OS X zum Beispiel?
Tut es verbesserte sich auch die "cross-Plattform-ness" der Grafik-hardware? Zum Beispiel, sagen wir, wir hatten zwei identische Computer, einschließlich des Betriebssystems. Ein Programm kompiliert mit OpenGL-4.3-Befehle auf einem system. Wenn das andere system hat eine Grafikkarte oder-Treiber unterstützt nur OpenGL 3.3, tut GLEW helfen mit, dass? (Das kompilieren der Shader für eine ältere OpenGL-version, vielleicht?)
So können Sie wahrscheinlich sehen, ich weiß wirklich nicht, was GLEW tut oder wie er es tut.
Einen letzten Punkt; hat jemand wissen, wie GLEW mit GLFW? Ich könnte posten, der als eine separate Frage eigentlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
GLEW ist nicht "erforderlich", wie Sie es nennen. Könnten Sie glcorearb.h-header oder etwas ähnliches. Allerdings, wenn Sie einen link mit einigen Funktion - es muss vorhanden sein auf dem Ziel-Plattform, oder das Programm würde nicht starten.
GLEW und andere sind genau damit umzugehen - du bist nicht die Verknüpfung mit GL-Funktionen direkt, sondern immer Funktionszeiger nach der Initialisierung phase. Sie ermöglicht es, zur Laufzeit überprüft, welche Erweiterungen vorhanden sind und welche Funktionen verwendet werden können.
Das einzige, was hilft es mit der Portabilität ist immer Funktion-Zeiger - kann es sein, wglGetProcAddress/glxGetProcAddress und es ist analog für apple-Betriebssysteme. Also Nein, es ist nicht der Fall. Aber die Vielfalt der verfügbaren GL extensions.
GLEW erfordert keine touch-points mit Ihren bevorzugten GL-Initialisierung Bibliothek - einfach anrufen glewInit nach dem erstellen der GL Kontext.
Richtig init glew ein OpenGL-Kontext erstellt werden muss und
wglMakeCurrent()
muss aufgerufen werden, bevor SieglewInit();
Ich würde dies in die Kommentare von keltar ' s Antwort, aber ich sehe nicht, wie.