不使用X-Window系统的情况下使用OpenGL

24

如何在Linux平台上使用OpenGL而不需要X窗口系统?我可以直接将OpenGL图形发送到帧缓冲设备吗?

有一个名为DirectFB(直接帧缓冲)的项目。使用DirectFB,我们可以实现这一点,但是DirectFB需要为每个硬件安装驱动程序,而我想使用的显卡只有Linux驱动程序。


2
你为什么要避免使用X?如果你需要OpenGL,那你真的有点需要X...如果只是因为"我希望尽可能快速",你不需要摆脱X,只需不启动合成器或桌面环境,并在X内运行你的应用程序即可。而且,如果是因为"我想要速度",由于DRI渲染几乎完全绕过了X,所以X很不可能成为瓶颈。 - Spudd86
5
了解,当您启动X时需要很多秒来加载,这对于嵌入式平台不太适合。 - user366250
与 https://dev59.com/HHA75IYBdhLWcg3wYH_I 相关的编程内容。 - Ciro Santilli OurBigBook.com
5个回答

9
这是我在我的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=安装目录

make realclean
make linux-fbdev
sudo make install

在选择install_directory安装目录时要小心,以免覆盖系统的 Mesa 库。 然后使用以下选项编译您的应用程序:-lGL -lOSMesa -ldl -L'install_directory/lib' -I'install_directory/include'


6

那么在上述所提出的库中,哪一个提供OpenGL接口/实现呢?都没有...只有Mesa有。 - plesiv

4

正如你所说,你需要一个驱动程序来完成这个任务。99.9%的Linux图形驱动程序使用X11,所以除非你有一个适用于你的硬件的DirectFB OpenGL驱动程序,否则你只能使用X11。


我的视频芯片组是Intel GM855,这个芯片组有适用于X的正常Linux驱动程序。它能够与DirectFB一起使用吗? - user366250
那我能做些什么呢?你看过MyOS X-Less吗?http://www.geocities.com/ze_aks/myos.html - user366250
为什么你不想使用X11? - Dr. Snoopy
@user366250 好的,你考虑过EGL吗?https://en.wikipedia.org/wiki/EGL_(API) -- 这里列出了“AIGLX - 试图加速GLX”。我基本上没有嵌入式编程经验,但这感觉像是一个XY问题,除非你是第一个遇到这个问题或者第一个解决它的人。否则,一定有一些优化或替代方案可以打败自己动手做。 - John P
有人应该制作一个驱动程序。 - Brōtsyorfuzthrāx
显示剩余2条评论

0

我在Linux中使用SDL(Simple Direct Media Layer)进行OpenGL编程。这个网站有一些不错的教程可以帮助你开始。使用SDL的一个优点是它可以跨平台移植,所以一旦你在Linux上运行了某些东西,只要在Windows上安装了SDL,它就可以直接转移过去。


我知道SDL,但SDL在X窗口中运行,并不仅限于Framebuffer设备。 - user366250
1
明白了,我不知道你不能使用X。 - Rich

0

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


怎么可能?!它是硬件加速的吗?! - user366250
@user366250:不是。软件渲染。 - genpfault
Mesa既是硬件又是软件。 - don bright
@donbright:是的,现在可以通过EGL实现加速的无X OpenGL,但在2010年中期还远远不行 :) - genpfault

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接