2010-06-13 8 views
12

J'utilise Windows et je remarque que beaucoup de fonctions sont grisées car je suppose que #ifdef GL_GLEXT_PROTOTYPES n'est pas défini. L'un d'entre eux est l'extension VBO. Devrais-je simplement définir GL_GLEXT_PROTOTYPES? Sinon, comment puis-je utiliser VBOs depuis im en utilisant Opengl32.dll (je veux ma demande d'avoir aucune dépendance dll non inclus dans Windows par défaut.) MerciglGenBuffers non défini?

Répondre

10

Je vous recommande d'utiliser GLEW pour se débarrasser de ce problème. Il s'agit d'une longue histoire, mais en reprenant, la bibliothèque OpenGL de Windows expose uniquement les points d'entrée OpenGL 1.1, donc toutes les fonctions au-delà de cette version sont chargées avec wglGetProcAddress. GLEW résout ce problème en faisant cela.

http://glew.sourceforge.net/

lien juste à GLEW et GLU/GLUT (si vous les utilisez).

+0

Cela doit être spécifié plus en évidence sur tous les sites de tutoriel! J'évitais GLEW pour réduire les dépendances. –

16

Oui, il est tout à fait normal et devrait avoir quelque chose comme:

#define GL_GLEXT_PROTOTYPES 

#include <GL/GL.h> 

Si vous essayez d'écrire OpenGL 3 code conforme, vous auriez normalement à changer que:

#define GL_GLEXT_PROTOTYPES 1 
#define GL3_PROTOTYPES 1 

#include <GL3/GL3.h> 
+5

Maintenant, je reçois des erreurs de l'éditeur de liens, toute bibliothèque que je dois inclure autre que opengl32? – jmasterx

+1

Avez-vous compris? – zezba9000

+1

Merci. Je préfère cela à l'approche GLEW. Pour une raison quelconque, GLEW ne fonctionne jamais pour moi (Linux, mesa). Il a tendance à entraîner des segavages aléatoires. – mgiuca