在没有 X-Window 系统的情况下使用 OpenGL

Posted

技术标签:

【中文标题】在没有 X-Window 系统的情况下使用 OpenGL【英文标题】:Using OpenGL Without X-Window System 【发布时间】:2011-03-03 11:22:03 【问题描述】:

如何在没有 X-Window 系统的 Linux 平台上进行 OpenGL,我可以将 OpenGL 图形直接发送到 Framebuffer 设备吗?

有一个名为 DirectFB(Direct FrameBuffer)的项目。使用 DirectFB 我们可以做到这一点,但 DirectFB 需要每个硬件的驱动程序,我想使用只有 Linux 驱动程序的显卡。

【问题讨论】:

为什么要避开 X?如果你需要 OpenGL,你真的有点需要 X ...你的应用在 X 中。另外,如果它是“我想要速度”,X 不太可能成为瓶颈,因为 DRI 渲染几乎完全绕过了它。 你知道,当你启动 x 时,我需要很长时间才能加载,它不适合嵌入式平台 相关***.com/questions/3326641/… 【参考方案1】:

这就是我在 ubuntu 11.04 中的详细做法: 1-使用命令安装依赖项:

sudo apt-get install xutils-dev libpciaccess-dev x11proto-dri2-dev x11proto-gl-dev libxdamage-dev libxfixes-dev

2- mesa 库需要 libdrm 版本 >= 2.4.24,这在 ubuntu 11.04 存储库中不可用(旧版本可用),因此您必须下载源代码并使用以下命令构建它:

./configure
make
make install

3-下载 mesa 库,然后使用以下命令进行编译: ./configure --prefix=install_directory

make realclean
make linux-fbdev
sudo make install

选择 install_directory 时要小心,以免覆盖系统的 mesa 库。 之后使用选项编译您的应用程序:-lGL -lOSMesa -ldl -L'install_directory/lib' -I'install_directory/include'

【讨论】:

【参考方案2】:

显然可以在没有 X 的情况下运行 SDL。

基本上,您的内核应该支持帧缓冲区,并且您可以在 DirectFB 之上使用 SDL。

这些线程没问题:

http://lists.libsdl.org/pipermail/sdl-libsdl.org/2006-October/058305.html

http://forums.libsdl.org/viewtopic.php?t=4079

【讨论】:

那么上面提出的(directFB、SDL)中哪个库提供了OpenGL接口/实现?没有……梅萨有。【参考方案3】:

正如您所说,您需要一个驱动程序来执行此操作。所有 Linux 图形驱动程序中有 99.9% 使用 X11,因此除非您的硬件有 DirectFB OpenGL 驱动程序,否则您将无法使用 X11。

【讨论】:

我的视频芯片组是 Intel GM855 ,这个芯片组有正常的 Linux 驱动程序用于 X 。可以和 DirectFB 一起使用吗 那我该怎么办?你看到 MyOS X-Less 了吗? geocities.com/ze_aks/myos.html 为什么不想使用 X11? X-Less 的主要原因是速度,我想在嵌入式平台上使用嵌入式版本的 Linux 内核。带有很多东西的 Linux 内核将在 Bootloader 启动后 3 秒加载。但是如果我使用 X More Seconds 将会丢失,例如 startx 命令将需要大约 10 秒才能完全加载 x。 @MatiasValdenegro 看来这里的 cmets 中的链接已经衰减,为什么不看看您是否可以回退链接或引用相关文本并在您的答案中总结 cmets 以便可以删除它们(请标志)。【参考方案4】:

我使用SDL(简单直接媒体层)在 Linux 中进行 OpenGL 编程。这个site 有一些很好的教程可以帮助您进行设置。使用 SDL 的一个优点是它可以跨平台移植,所以一旦你在 Linux 上运行了一些东西,只要你在那里安装了 SDL,它就会直接转移到 Windows。

【讨论】:

我知道 SDL,但 SDL 在 X Window 中运行,并且不仅与 Framebuffer 设备一起运行 知道了,我不明白你不能使用 X。【参考方案5】:

您可以使用Mesa 进行基于帧缓冲区的软件渲染。

【讨论】:

怎么样?!是硬件加速吗?! @user366250:不。 软件渲染。 Mesa 既是硬件又是软件 @donbright:是的,现在加速 X-less OpenGL 是可以通过 EGL 实现的,但早在 2010 年中期就更不可能了 :)

以上是关于在没有 X-Window 系统的情况下使用 OpenGL的主要内容,如果未能解决你的问题,请参考以下文章

deepin 自启动程序和自启动命令

ubuntu 更新之后, 不能进入 X-window 怎么办?

Linux该如何学习?

linux系统一开机直接到控制台,回不X模式怎么办

怎样在 CentOS 7.0 上安装和配置 VNC 伺服器

在运行时本地启用/禁用 OpenMP