2014-04-17 18 views
13

Voglio usare il rendering OpenGL senza X, con google lo trovo: http://dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual-console/ dice che è possibile. Dovrei usare DRM ed EGL. EGL può creare un contesto opengl ma richiede una finestra nativa. Probabilmente il DRM mi fornirà NativeWindow, non è vero? Dovrei usare KMS? So che devo avere un driver video open source. Voglio esattamente il contesto OpenGL, ma non OpenGL ES (Linux). Forse qualcuno conosce tutorial o codice di esempio?Come creare il contesto opengl tramite drm (Linux)

risposta

17

Sì, è necessario lo stack kms (example). Here è un semplice esempio in Linux, usa OpenGL es, ma il passo per farlo funzionare contro OpenGL api è semplice.

Negli attribs EGL impostato EGL_RENRERABLE_TYPE a EGL_OPENGL_BIT

e dire che EGL api di legarsi a:

eglBindAPI(EGL_OPENGL_API); 

essere sicuri di avere i driver più recenti del kernel e mesa-dev, libdrm-dev, libgbm-dev. Questo pezzo di codice è portatile su Android, non è così facile avere lo stack grafico Android predefinito silenziato.

nota: ho avuto problemi con la versione a 32 bit, ma ancora non so perché. quelle librerie sono state sviluppate attivamente, quindi non sono sicuro che non fosse un bug.

* note2: a seconda della versione GLSL, la precisione del float è supportata o meno.

precision mediump float; 

Nota3: se si soffre di insufficienza permision con /dev/dri/card0, concedere con:

sudo chmod 666 /dev/dri/card0 

o aggiungere utente corrente video gruppo con

sudo adduser $user video 

si può anche setguid per il vostro eseguibile con gruppo impostato su video. (forse l'opzione migliore)

+1

funziona, grazie! – user2616346

+0

Prego. –

+0

Ciao, j-p! Sto cercando l'esempio simile, ma per i dispositivi Android. Come ho capito non c'è stack DRM in Android. Suppongo che l'API grafica di livello inferiore debba funzionare tramite dispositivi fb0 e/dev/ion, ma non ho esempi. Per favore, fai riferimento alla mia domanda se hai qualche nota http://stackoverflow.com/questions/33742552/framebuffer-egl-example-segfault –

Problemi correlati