Saltar al contenido

OpenGL y GLSL 3.3 en una HD Graphics 4000 con Ubuntu 12.04

Tenemos la respuesta a esta incógnita, al menos eso deseamos. Si presentas dudas dínoslo y sin dudarlo te ayudaremos

Solución:

¡¡¡Una gran noticia!!!

Mesa 10 está fuera, lo que significa apoyo para Opengl 3.3 y GLSL 3.3!

Esto se prueba en mi procesador móvil Core i5 de cuarta generación con un conjunto de chips de gráficos HD 4400.

Moderno OpenGL ¡El desarrollo ahora es posible en conjuntos de chips Intel integrados en Linux! este es un gran paso adelante. Note that ubuntu 15.04 ship with Mesa 10.5

Aquí estoy renderizando un triángulo usando un Shader GLSL 3.3 🙂

sombreador glsl 3.3

De acuerdo, para que los controladores experimentales funcionen en Ubuntu 13.10, necesitará hacer algunas cosas:

# Note this will take awhile!
1.) Add the PPA Repository
  $ sudo add-apt-repository ppa:oibaf/graphics-drivers
2.) Update sources
  $ sudo apt-get update
3.) Dist-upgrade (rebuilds many packages)
  $ sudo apt-get dist-upgrade
4.) Reboot!

In your code make sure you request a Opengl 3.3 context!

Ejecute este comandoglxinfo | grep OpenGLdeberías obtener algo como…

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.0-devel (git-f9cfe5c     saucy-oibaf-ppa)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

Artículos fuente

http://www.phoronix.com/scan.php?page=news_item&px=MTQ5OTk

https://launchpad.net/~oibaf/+archive/graphics-drivers/

así que he visto muchos hilos relacionados con esto y pensé que este sería un buen lugar para responder. Estoy ejecutando Ubuntu 15.04 con Intel ivybridge. Después de usar la aplicación “Instalador de gráficos Intel para Linux”, glxinfo brinda la siguiente información sobre openGl:

OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.0
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 10.6.0
OpenGL shading language version string: 1.30

Ahora a partir de esto se puede ver que el centro El perfil y la versión glsl son 3.3, pero openGl compatible es solo 3.0, por lo tanto, si desea que su código se ejecute con 3.3, debe especificar tanto un perfil de núcleo opengl como un perfil de núcleo glsl. Los siguientes pasos deberían funcionar si estás usando freeglut y glew:

  • la versión glsl # debe especificar que desea el perfil principal:

#version 330 core

  • especifica que quieres opengl 3.3:

glutInitContextVersion (3, 3);

  • y finalmente configure glewExperimental para true antes de glewInit():

glewExperimental = GL_TRUE;

Editar:

Algo que olvidé mencionar que parece ser relevante para la mayoría de los usuarios de *nix que usan freeglut se refiere a las pruebas de profundidad, es decir, qué se debe dibujar (y qué no) de una malla desde un punto de vista particular:

Para usar pruebas de profundidad en Linux, no solo necesita habilitar las pruebas de profundidad a través de

(glEnable(GL_DEPTH_TEST);

pero también necesita crear su contexto de exceso para tener un búfer de profundidad (Windows parece tener un búfer de profundidad por defecto, Linux no lo tiene).

Usando freeglut eso significa que necesitas incluir GLUT_DEPTH en glutInitDisplayMode para que cree el contexto para tener un búfer de profundidad, por ejemplo

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

PD Solo he estado usando freeglut porque el módulo universitario que tomé nos dio un código de demostración para ejecutarlo. Desde entonces definitivamente recomendaría cambiar a glfw en su lugar. La primera parte de mi respuesta todavía se aplica bastante, solo que con los métodos glfw.

Si guardas alguna cuestión o capacidad de ascender nuestro enunciado puedes realizar una glosa y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *