2013-01-02 8 views
18

sto correndo che la configurazione:OpenGL & GLSL 3.3 da un HD Graphics 4000 sotto Ubuntu 12.04

  • Ubuntu 12.04
  • Intel HD Graphics 4000

glxinfo darmi che i parametri:

OpenGL renderer string: Mesa X11 
OpenGL version string: 2.1 Mesa 8.0.4 
OpenGL shading language version string: 1.20 
OpenGL extensions: 

Il mio obiettivo era eseguire OpenGL 3.3 (e quindi GLSL 3.3). Se sono facile con i problemi di sviluppo, mi sento perso in hardware e driver, quindi qualcuno sa come raggiungerlo con la mia configurazione?

+0

Dopo aver installato molti driver e pacchetti diversi, riesco a eseguire l'aggiornamento a 'OpenGL version string: 3.0 Mesa 8.0.4 e OpenGL shading language string: 1.30'. Qualcuno riesce ad almeno OpenGL 3.3? – muxisar

risposta

1

Purtroppo in questo momento sembra che questo non sia possibile, dal momento che i driver open source forniti da Intel sono gli unici disponibili. Esiste una versione più recente della tua (Mesa 9.0.1) ma supporta ancora OpenGL 3.0 e GLSL 1.30, come puoi leggere nelle note di rilascio allo Intel Open Source website.

Il problema è che i driver open source sono bloccati con Mesa, che in questo momento supporta solo GLSL 1.40, come potete vedere qui: http://www.mesa3d.org/shading.html#support

ho paura che se avete bisogno di utilizzare un ambiente OpenGL 3.3 , è necessario disporre di una GPU dedicata con driver binari disponibili (schede nvidia o ati).

30

Ottime notizie !!!

Mesa 10 è fuori che significa che il supporto per Opengl 3.3 e GLSL 3.3!

Questo è stato testato sul processore processore Core i5 di quarta generazione con un chipset grafico HD 4400.

Modern OpenGL lo sviluppo è ora possibile su chipset Intel integrati in linux! questo è un enorme passo avanti. Note that ubuntu 15.04 ship with Mesa 10.5

Ecco me rendering di un triangolo con un GLSL 3.3 Shader :)

glsl 3.3 shader

Ok, quindi, al fine di ottenere i driver sperimentali per fare questo lavoro su Ubuntu 13.10 si sta andando a bisogno di fare un paio di cose:

# 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! 

Esegui questo comando 0.123. si dovrebbe ottenere qualcosa di simile ...

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 

Fonte articoli

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

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

+1

Grazie per il tuo post, è davvero utile! Stranamente, mentre 'glxinfo' riporta per me Mesa 10.1, è ancora disponibile solo OpenGL 3.0. Hai idea del perché possa essere? Ho postato la domanda qui: http://stackoverflow.com/questions/21565680/how-to-enable-opengl-3-3-using-mesa-10-1-on-ubuntu Grazie! –

+0

http://stackoverflow.com/questions/25936165/ubuntu-opengl-3-inside-vmware - potresti aiutarmi con questa domanda?Devo forzare l'uso di un renderer software perché la mia Ubuntu è in esecuzione in VmWare –

+0

Questo non sembra funzionare ancora abbastanza in 14.04 (è giugno ora). glxinfo riporta la stessa stringa per il profilo principale ma: Stringa di versione OpenGL: 3.0 Mesa 10.7.0-devel (git-f97166e 2015-06-01 trusty-oibaf-ppa) Versione di lingua di ombreggiatura OpenGL stringa 1.30 E quando creo un contesto con glut che richiede la versione 3.3 Ho ancora un contesto versione 3.0. – cheshirekow

5

così Ho visto un sacco di discussioni che circondano questo e ho pensato qui sarebbe un buon posto per rispondere. Sto usando Ubuntu 15.04 con intel ivybridge.Dopo aver utilizzato il "programma di installazione di Intel Graphics per Linux" applicazione, glxinfo ha pronunciato la seguente informazioni per quanto riguarda 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 

Ora da questo si può vedere che il profilo nucleo e la versione GLSL sono 3.3, ma compatibile OpenGL è solo 3.0 quindi se vuoi che il tuo codice sia eseguito con 3.3 devi specificare sia un profilo core opengl che un profilo glsl core. Le seguenti operazioni funzionano se state usando freeglut e Glew:

  • il #version GLSL dovrebbe specificare che si desidera che il profilo di base:

#version 330 core

  • specificare che si desidera OpenGL 3.3:

glutInitContextVersion (3, 3);

  • e infine impostare glewExperimental su true prima glewInit():

glewExperimental = GL_TRUE;

Edit:

Qualcosa ho dimenticato di dire che sembra essere rilevante per la maggior parte * nix utenti che usano freeglut riguarda test di profondità, i, e cosa dovrebbe essere disegnato (e cosa non dovrebbe) di una maglia da un particolare punto di vista:

Per utilizzare il test di profondità su Linux, non solo necessario attivare il test di profondità tramite

(glEnable(GL_DEPTH_TEST);

ma è anche necessario per creare il contesto sovrabbondanza di avere un buffer di profondità (Windows sembra avere di solito un buffer di profondità per impostazione predefinita, Linux no).

Utilizzare freeglut significa che è necessario includere GLUT_DEPTH in glutInitDisplayMode in modo che crei il contesto per disporre di un buffer di profondità, ad es.

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

P.S. Ho usato solo freeglut perché il modulo college che ho preso ci ha dato il codice demo per usarlo. Da allora consiglierei di passare a glfw invece. La prima parte della mia risposta è ancora valida, solo con i metodi glfw.