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
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)
funziona, grazie! – user2616346
Prego. –
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 –