2010-06-13 9 views
12

Estoy usando Windows y veo que muchas funciones están atenuadas porque supongo que #ifdef GL_GLEXT_PROTOTYPES no está definido. Una de estas es la extensión VBO. ¿Debo simplemente definir GL_GLEXT_PROTOTYPES? De lo contrario, ¿cómo si puedo usar OISCIV desde im utilizando Opengl32.dll (Quiero que mi aplicación no tener dependencias DLL no incluidos en Windows de forma predeterminada.) GraciasglGenBuffers no definido?

Respuesta

10

recomiendo que utilice GLEW para deshacerse de ese problema.

Es una larga historia, pero resumiendo, la biblioteca OpenGL de Windows solo expone los puntos de entrada de OpenGL 1.1, por lo que todas las funciones más allá de esa versión se cargan con wglGetProcAddress. GLEW resuelve este problema haciendo eso.

http://glew.sourceforge.net/

Sólo enlazar a GLEW y GLU/GLUT (si se utilizan).

+0

¡Esto debe especificarse más prominentemente en todos los sitios de tutoriales! Estaba evitando GLEW para reducir las dependencias. –

16

Sí, es bastante normal y esperado a tener algo como:

#define GL_GLEXT_PROTOTYPES 

#include <GL/GL.h> 

Si usted está tratando de escribir código OpenGL 3 compatible, usted normalmente cambia a que:

#define GL_GLEXT_PROTOTYPES 1 
#define GL3_PROTOTYPES 1 

#include <GL3/GL3.h> 
+5

Ahora recibo errores de enlazador, ¿hay alguna lib que deba incluir aparte de opengl32? – jmasterx

+1

¿Has descubierto esto? – zezba9000

+1

Gracias. Prefiero esto sobre el enfoque GLEW. Por alguna razón, GLEW nunca funciona para mí (Linux, mesa). Tiende a dar como resultado segfaults aleatorios. – mgiuca