Mit den OpenGL-Erweiterungen für Windows
Möchte ich die Funktionen ausgesetzt unter der OpenGL-Erweiterungen. Ich bin auf Windows, wie mache ich das?
InformationsquelleAutor der Frage Ashwin Nanjappa | 2008-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfache Lösung: Verwenden Sie GLEW. Sehen Sie, wie hier.
Harte Lösung:
Wenn Sie eine wirklich starken Grund nicht zu verwenden, GLEW, hier ist, wie um das gleiche zu erreichen ohne es:
Identifizieren, die OpenGL extension und extension-APIs, die Sie verwenden möchten. OpenGL extensions sind aufgelistet in der OpenGL Extension Registry.
Überprüfen Sie, ob Ihre Grafikkarte unterstützt die Erweiterung, die Sie verwenden möchten. Wenn es funktioniert, dann ist deine Arbeit fast fertig! Downloaden und installieren Sie die neuesten Treiber und SDKs für Ihre Grafikkarte.
Ihre Grafikkarte Hersteller bietet ein glext.h header-Datei (oder eine gleichnamige header-Datei) mit allen Erklärungen nötig, um die unterstützten OpenGL-Erweiterungen. (Beachten Sie, dass nicht alle Erweiterungen vielleicht unterstützt werden.) Entweder legen Sie diese header-Datei irgendwo dein compiler können es abholen oder include-Verzeichnis in Ihrem compiler die include-Verzeichnisse-Liste.
Hinzufügen
#include <glext.h>
Zeile in Ihrem code zum einbinden der header-Datei in Ihrem code.Öffnen glext.hfinden Sie die API, die Sie verwenden möchten, und greifen Sie seine entsprechenden hässlich aussehende Erklärung.
All dies bedeutet, dass Sie Ihre header-Datei hat die API-Deklaration in 2 Formen. Die eine ist eine wgl-wie hässlich Funktionsdeklaration Zeiger. Die andere ist eine vernünftige Suche-Funktion Erklärung.
Für jedes Erweiterungs-API, die Sie verwenden möchten, fügen Sie in Ihrem code die Deklarationen der Funktion den Namen als eine Art der hässlich aussehende Zeichenfolge.
Aber es sieht hässlich, alles, was wir tun, ist zu erklären, Funktionszeiger des Typs des entsprechenden Erweiterungs-API.
Initialisieren diese Funktion Zeiger mit Ihrer rechtmäßigen Funktionen. Diese Funktionen ausgesetzt sind, durch die Bibliothek oder ein Treiber. Wir müssen wglGetProcAddress() Funktion, dies zu tun.
Vergessen Sie nicht, prüfen Sie die Funktion Zeiger für NULL. Wenn durch Zufall wglGetProcAddress() konnte nicht finden, dass die Erweiterung-Funktion, die es haben würde, initialisiert den Zeiger mit NULL.
Das ist es, wir sind fertig! Jetzt können Sie diese Funktion Zeiger nur wie, wenn die Funktion ruft existierte.
Referenz: Geht Über OpenGL 1.1 für Windows von Dave Astle — Der Artikel ist ein wenig veraltet, hat aber alle Informationen, die Sie brauchen, um zu verstehen, warum dieser erbärmlichen situation auf Windows vorhanden ist, und wie zu umgehen.
InformationsquelleAutor der Antwort Ashwin Nanjappa
Einen "Sehr guten Grund" nicht zu verwenden GLEW könnte sein, dass die Bibliothek nicht unterstützt durch Ihre compiler/IDE. E. g: Borland C++ Builder.
In diesem Fall, möchten Sie vielleicht, um den Wiederaufbau der Bibliothek von Quelle. Wenn es klappt, Super, ansonsten manuelle Erweiterung laden ist nicht so schlimm, wie es klingen.
InformationsquelleAutor der Antwort
@Kronikarz: von den blicken von ihm, GLEW scheint der Weg der Zukunft. NVIDIA bereits Schiffe, die er zusammen mit seiner OpenGL SDK. Und seine Letzte Veröffentlichung war im Jahr 2007 im Vergleich zu FREUDE, das war in 2006.
Aber die Verwendung der beiden Bibliotheken sieht fast das gleiche zu mir. (GLEW hat eine init ()die muss aufgerufen werden, bevor irgend etwas anderes, obwohl.) Also, Sie brauchen nicht zu wechseln, es sei denn, Sie finden einige extension nicht unterstützt wird unter SCHADENFREUDE.
InformationsquelleAutor der Antwort Ashwin Nanjappa
GL3W ist ein public-domain-Skript erstellt eine Bibliothek, die lädt nur die Kern-Funktionalität für OpenGL 3/4. Es ist auf github zu finden unter:
https://github.com/skaslev/gl3w
GL3W benötigt Python 2.6 zu generieren, die Bibliotheken und Header-Dateien für OpenGL; es erfordert keine Python nach.
InformationsquelleAutor der Antwort Steve Howard