一尘不染

如何通过DRM创建OpenGL上下文(Linux)

linux

我想在没有X的情况下使用OpenGL渲染,而在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)。也许有人知道教程或示例代码?


阅读 1363

收藏
2020-06-03

共1个答案

一尘不染

是的,您需要kms堆栈(示例)。是Linux下的一个简单示例,它使用OpenGL
es,但是使其与OpenGL api兼容的步骤很简单。

在egl属性中设置EGL_RENRERABLE_TYPEEGL_OPENGL_BIT

并告诉egl绑定到哪个api:

eglBindAPI(EGL_OPENGL_API);

一定要有最新的内核驱动程序和mesa-devlibdrm-devlibgbm- dev。这段代码可在android上移植,将默认的android图形堆栈静默起来并不是那么容易。

注意:我在使用32位版本时遇到了麻烦,但仍然不知道为什么。 这些库是积极开发的,因此不确定这不是错误。

  • note2:取决于您的GLSL版本,是否支持浮点精度。

    precision mediump float;

note3:如果您的渗透失败/dev/dri/card0,请授予:

sudo chmod 666 /dev/dri/card0

或当前用户添加到video

sudo adduser $user video

您也可以为可执行文件设置setguid,并将组设置为video。(也许是最好的选择)

2020-06-03