Подтвердить что ты не робот

Как создать контекст opengl через drm (Linux)

Я хочу использовать рендеринг OpenGL без X, с помощью google я нахожу его: http://dvdhrm.wordpress.com/2012/08/11/kmscon-linux-kmsdrm-based-virtual-console/ там говорится, что это возможно. Я должен использовать DRM и EGL. EGL может создавать контекст opengl, но требует NativeWindow. Возможно, DRM предоставит мне NativeWindow, не так ли? Должен ли я использовать KMS? Я знаю, что у меня должен быть видеодрайвер с открытым исходным кодом. Мне нужен именно контекст OpenGL, но не OpenGL ES (Linux). Может быть, кто-то знает учебник или пример кода?

4b9b3361

Ответ 1

Да, вам нужно kms stack (example). Здесь - простой пример в Linux, он использует OpenGL es, но шаг, чтобы он работал с OpenGL api, просты.

В атрибутах egl установите EGL_RENRERABLE_TYPE в EGL_OPENGL_BIT

И скажите egl, с которым api привязывается к:

eglBindAPI(EGL_OPENGL_API);

Обязательно наличие последних драйверов ядра и mesa-dev, libdrm-dev, libgbm-dev. Эти фрагменты кода переносимы на Android, просто не так просто заставить замолчать графический стек по умолчанию.

Примечание: у меня были проблемы с 32-битной версией, но я все еще не знаю почему. эти библиотеки активно развиваются, поэтому не уверен, что это не ошибка.

* note2: в зависимости от вашей версии GLSL поддерживается точность float.

precision mediump float;

note3: если у вас есть сбой разрешений с /dev/dri/card0, дайте ему:

sudo chmod 666 /dev/dri/card0

или добавить текущего пользователя в группу video с помощью

sudo adduser $user video

вы также можете указать для своего исполняемого файла с группой, настроенной на видео. (возможно, лучший вариант)