2010-06-13 6 views
12

Ich benutze Windows und ich stelle fest, dass viele Funktionen ausgegraut sind, weil ich denke, dass #ifdef GL_GLEXT_PROTOTYPES nicht definiert ist. Eine davon ist die VBO-Erweiterung. Soll ich nur GL_GLEXT_PROTOTYPES definieren? Ansonsten wie sonst kann ich VBOs da im verwenden mit Opengl32.dll (Ich möchte meine Anwendung keine dll-Abhängigkeiten hat nicht standardmäßig in Windows enthalten.) DankglGenBuffer nicht definiert?

Antwort

10

ich empfehle Ihnen, GLEW verwenden dieses Problem loszuwerden.

Es ist eine lange Geschichte, aber die Windows OpenGL-Bibliothek setzt OpenGL 1.1-Einstiegspunkte frei, so dass alle Funktionen, die über diese Version hinausgehen, mit wglGetProcAddress geladen werden. GLEW löst dieses Problem dadurch.

http://glew.sourceforge.net/

Link einfach zu GLEW und GLU/GLUT (wenn Sie sie verwenden).

+0

Dies muss auf allen Tutorial-Sites besser angegeben werden! Ich vermied GLEW, um Abhängigkeiten zu reduzieren. –

16

Ja, es ist ganz normal und hat etwas zu erwarten wie:

#define GL_GLEXT_PROTOTYPES 

#include <GL/GL.h> 

Wenn Sie versuchen, OpenGL 3-kompatiblen Code zu schreiben, würden Sie normalerweise ändern, dass auf:

#define GL_GLEXT_PROTOTYPES 1 
#define GL3_PROTOTYPES 1 

#include <GL3/GL3.h> 
+5

Jetzt bekomme ich Linker Fehler, jede lib muss ich andere als opengl32 enthalten? – jmasterx

+1

Hast du das herausgefunden ?? – zezba9000

+1

Danke. Ich bevorzuge dies gegenüber dem GLEW-Ansatz. Aus irgendeinem Grund funktioniert GLEW nie für mich (Linux, Mesa). Es neigt dazu, zufällige segfaults zu ergeben. – mgiuca