2014-04-17 14 views
13

Chcę używać renderowania OpenGL bez X, z google i go znajdę: http://dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual-console/ mówi, że jest to możliwe. Powinienem korzystać z DRM i EGL. EGL może tworzyć kontekst OpenGL, ale wymaga NativeWindow. DRM prawdopodobnie dostarczy mi NativeWindow, prawda? Czy powinienem używać KMS? Wiem, że muszę mieć sterownik wideo open source. Chcę dokładnie kontekst OpenGL, ale nie OpenGL ES (Linux). Może ktoś zna tutorial lub przykładowy kod?Jak utworzyć kontekst OpenGL przez drm (Linux)

Odpowiedz

17

Tak, potrzebny jest stos kms (example). Here jest prostym przykładem pod Linuksem, używa OpenGL es, ale krok, aby działał przeciwko API OpenGL jest prosty.

W EGL attribs ustawić EGL_RENRERABLE_TYPE do EGL_OPENGL_BIT

I powiedz EGL która api do wiązania:

eglBindAPI(EGL_OPENGL_API); 

Pamiętaj, aby mieć najnowsze sterowniki jądra i mesa-dev, libdrm-dev, libgbm-dev. Ten kawałek kodu jest przenośny na Androidzie, po prostu nie jest tak łatwo mieć domyślny stos graficzny Android wyciszony.

uwaga: miałem problem z wersją 32-bitową, ale nadal nie wiem dlaczego. te biblioteki są aktywnie rozwijane, więc nie jestem pewien, czy to nie był błąd.

* note2: w zależności od wersji GLSL precyzja pływania jest obsługiwana lub nie.

precision mediump float; 

Uwaga 3: jeśli u pacjenta występuje niewydolność permision z /dev/dri/card0 przyznawać go:

sudo chmod 666 /dev/dri/card0 

lub dodać bieżącego użytkownika do video grupy z

sudo adduser $user video 

można również setguid do pliku wykonywalnego z grupą ustawioną na wideo. (może najlepsza opcja)

+1

to działa, dziękuję! – user2616346

+0

Nie ma za co. –

+0

Witaj, j-p! Szukam podobnego przykładu, ale na urządzenia z Androidem. Jak rozumiem, nie ma stosu DRM w systemie Android. Domyślam się, że low-poziomowe api graficzne musi działać przez urządzenia fb0 i/dev/ion, ale ja nie mam żadnego przykładu. Proszę, odeślij moje pytanie, jeśli masz jakieś uwagi: http://stackoverflow.com/questions/33742552/framebuffer-egl-example-segfault –

Powiązane problemy