如何在没有 X-Window 系统的 Linux 平台上进行 OpenGL,我可以将 OpenGL 图形直接发送到帧缓冲设备吗?
有一个名为 DirectFB(Direct FrameBuffer)的项目。使用 DirectFB 我们可以做到这一点,但 DirectFB 需要每个硬件的驱动程序,我想使用只有 Linux 驱动程序的显卡。
如何在没有 X-Window 系统的 Linux 平台上进行 OpenGL,我可以将 OpenGL 图形直接发送到帧缓冲设备吗?
有一个名为 DirectFB(Direct FrameBuffer)的项目。使用 DirectFB 我们可以做到这一点,但 DirectFB 需要每个硬件的驱动程序,我想使用只有 Linux 驱动程序的显卡。
这就是我在 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'
显然可以在没有 X 的情况下运行 SDL。
基本上,您的内核应该支持帧缓冲区,并且您可以在 DirectFB 之上使用 SDL。
这些线程没问题:
http://lists.libsdl.org/pipermail/sdl-libsdl.org/2006-October/058305.html
正如您所说,您需要一个驱动程序来执行此操作。所有 Linux 图形驱动程序中有 99.9% 使用 X11,因此除非您的硬件有 DirectFB OpenGL 驱动程序,否则您只能使用 X11。
您可以使用Mesa进行基于帧缓冲区的软件渲染。