当前位置: 首页 > 面试题库 >

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

凌长恨
2023-03-14
问题内容

我想在没有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)。也许有人知道教程或示例代码?


问题答案:

是的,您需要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。(也许是最好的选择)



 类似资料:
  • 所有上传的数据必须包含名称列。 上传数据指将已整理好的表格,直接上传到地图者中。具体参考格式可以在“数据类型”下方,下载EXCEL样例文件。 注意:点线面的模版不完全相同,请选择好数据类型后再下载。 点数据分为两种情况 1.没有坐标,只有地址信息 可以通过系统进行自动定位获取坐标,此种格式要求表格必须包含“地址”列,具体参考“样例一”。系统会使用地址列进行定位。地址列越详细定位越准确。 注意:请在

  • 问题内容: 我想创建一个上下文增量,不确定我使用的术语是否正确。这是我的桌子 在这之后我做了 在MyISAM注意页面上给出的示例中,他们没有提供示例,该示例使用enum,这里我没有使用enum,但是他们没有提到它仅适用于enum。但是我得到的输出是 但我想这样 有人可以告诉我我在做什么错吗? 问题答案: 您必须交换索引的顺序: 我从手册中引用: 对于MyISAM表,可以 在多列索引的 第二 列上指

  • 问题内容: 我正在使用一个有趣的世界编辑器,并使用Java和JLWGL。到目前为止一切正常。现在,我尝试创建一个窗口,可以在其中添加要使用的地形或新模型。问题是,当我尝试从主界面创建地形并创建并显示该地形时,但是当我尝试通过按钮事件监听器调用该地形时,出现错误: 在当前线程中未找到OpenGL上下文。 我基本上知道为什么会得到错误。我用来获取输入并单击按钮的框架没有opengl上下文。 现在的问题

  • 问题内容: 我需要通过运行设置服务器的脚本来添加cron作业。我目前正在使用Ubuntu。我可以使用,但这将打开一个编辑器来编辑当前的crontab。我想以编程方式执行此操作。 有可能这样做吗? 问题答案: Cron作业通常存储在每个用户的文件下 您要做的最简单的事情可能就是创建一个配置了作业的文本文件,然后将其复制到cron spool文件夹中,并确保它具有正确的权限(600)。

  • 我想把unity上下文放到opengl中,这样我就可以在opengl glfw窗口中显示unity渲染纹理。我尝试使用 ,但是oldContext的值为null。 任何帮助都将不胜感激!

  • 我正在使用Java和JLWGL开发一个有趣的世界编辑器。到目前为止,一切正常。现在我试着创建一个窗口,在那里我可以添加一个地形或一个新模型来使用。问题是,当我尝试从主线程创建地形时,它被创建并显示,但当我尝试通过按钮eventlistener调用它时,我得到了一个错误:在当前线程中找不到OpenGL上下文。我基本上知道我为什么会出错。我用来获取输入并单击按钮的框架没有opengl上下文。 我现在的