mac libreria glad descargar opengl opengl-3 glew opengl-4

opengl - libreria - ¿Qué hace GLEW y por qué lo necesito?



glew opengl mac (2)

De acuerdo, entonces ya sé por qué necesito GLEW, pero solo hasta cierto punto.

Si estoy usando material OpenGL moderno, probablemente desde la versión 3.0 en adelante, y / o estoy usando Core Profile, entonces se requiere GLEW ya que sin él se produjo una compilación de error producido, como glGenVertexArrays .

Entonces GLEW hace un poco de trabajo de fondo incluyendo las funciones modernas de OpenGL que nos gustaría usar, probablemente.

Aparte de eso, ¿hace algo más? Además, ¿cómo funciona?

Como ejemplo, ¿mejora la compilación multiplataforma? (¿Se requieren menos modificaciones al código si se cambia de Linux a Windows o OS X, por ejemplo?

¿También mejoró la "multiplataforma" de hardware de gráficos? Por ejemplo, supongamos que tenemos dos computadoras idénticas, incluido el sistema operativo. Un programa se compila utilizando comandos OpenGL 4.3 en un sistema. Si el otro sistema tiene una tarjeta gráfica o un controlador que solo admite OpenGL 3.3, ¿GLEW ayuda con eso? (¿Compila sombreadores para una versión anterior de OpenGL, quizás?)

Entonces probablemente puedas ver que no sé realmente qué hace GLEW ni cómo lo hace.

Un último punto; ¿Alguien sabe cómo usar GLEW con GLFW? Podría publicar eso como una pregunta separada en realidad.


GLEW no es ''obligatorio'', como tú lo pones. Podría usar el encabezado glcorearb.h, o algo por el estilo. Sin embargo, si enlaza con alguna función, debe existir en la plataforma de destino o su programa no se lanzará. GLEW y otros son exactamente para manejar eso: no estás vinculando con funciones GL directamente, sino que obtiene punteros de función después de la fase de inicialización. Le permite verificar en tiempo de ejecución qué extensiones están presentes y qué funciones se pueden usar.

Lo único que ayuda con la portabilidad es obtener punteros de función: puede ser wglGetProcAddress / glxGetProcAddress y es analógica para los sistemas operativos de Apple. Entonces no, no es un caso. Sin embargo, la variedad de extensiones GL disponibles es.

GLEW no requiere puntos de contacto con su biblioteca de inicialización GL preferida; solo llame a glewInit después de crear el contexto GL.


Para iniciar correctamente glew, se debe crear un contexto OpenGL y se debe invocar a glewInit(); antes de llamar a glewInit();

Pondría esto en los comentarios de la respuesta de Keltar, pero no veo cómo.