2014-04-17 31 views
13

X olmadan OpenGL render kullanmak istiyorum, google i bulmak: http://dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual-console/ mümkün olduğunu söylüyor. DRM ve EGL kullanmalıyım. EGL, opengl bağlamı oluşturabilir, ancak bir NativeWindow gerektirir. DRM muhtemelen bana NativeWindow sağlayacaktır, öyle değil mi? KMS kullanmalı mıyım? Açık kaynak video sürücüsüne sahip olduğumu biliyorum. Tam OpenGL içeriğini istiyorum, ama OpenGL ES (Linux) değil. Belki biri öğretici veya örnek kod biliyor?drm (linux) üzerinden opengl içeriği nasıl oluşturulur

cevap

17

Evet, kms yığınına (example) ihtiyacın var. Here, linux altında basit bir örnektir, OpenGL es kullanır, Ama OpenGL api ile çalışmasını sağlamak için gereken adım basittir. egl ATTRIBS ise

EGL_OPENGL_BIT

için EGL_RENRERABLE_TYPE ayarlamak Ve bağlanma egl hangi api söyleyin:

eglBindAPI(EGL_OPENGL_API); 

son çekirdek sürücülerini ve mesa-dev, libdrm-dev, libgbm-dev olduğundan emin olun. Bu kod parçaları android üzerinde taşınabilir, varsayılan android grafik yığını susturmak için çok kolay değil.

not: 32bit sürümüyle ilgili sorun yaşadım, ancak hala nedenini bilmiyorum. Bu kütüphaneler aktif olarak geliştirildi, bu yüzden bir hata olmadığından emin değiller.

* note2: GLSL sürümünüze bağlı olarak, şamandıra hassaslığı desteklenir veya desteklenmez.

precision mediump float; 

Note3: Eğer /dev/dri/card0 ile permision yetmezliği varsa, onu vermek:

sudo chmod 666 /dev/dri/card0 

ya da yürütülebilir için setguid olabilir

sudo adduser $user video 

ile video grubuna geçerli kullanıcı eklemek grup videoyla ayarlandı. (belki de en iyi seçenek)

+1

çalışıyor, teşekkürler! – user2616346

+0

Rica ederim. –

+0

Merhaba, j-p! Ben benzer bir örnek arıyorum, ama android cihazlar için. Anladığım kadarıyla Android'de DRM yığını yok. Sanırım düşük seviyeli grafik api, fb0 ve/dev/ion aygıtları ile çalışmalıdır, ancak ben hiç bir örneğim yok. Herhangi bir notunuz varsa lütfen soruma bakın http://stackoverflow.com/questions/33742552/framebuffer-egl-example-segfault –

İlgili konular