22
votes

How to OpenGL on Linux Platform Without X-Window System, can I send OpenGL Graphics Directly to Framebuffer Device?

There Is Project Named DirectFB (Direct FrameBuffer). With DirectFB We can do this but DirectFB needs for driver for each hardware and I want to user a graphic card that only have Linux driver.

5
Why do you want to avoid X? If you need OpenGL you really kinda need X... If it's just "I want it to go as fast as possible" you don't need to get rid of X, just don't start a compositor or desktop environment and only run your app inside X. Also if it is "I want speed" X is very unlikely to be the bottleneck since DRI rendering pretty much bypasses it entirely.Spudd86
You Know , When u start the x i take a lot of seconds to loading and its not suitable for embedded platformsuser366250

5 Answers

8
votes

This is how i did it in my ubuntu 11.04 in detail: 1- Install the dependencies using the command:

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

2- The mesa library needs libdrm version >= 2.4.24 which is not available in the ubuntu 11.04 repository (older version is available) so you have to download the source and build it using the following commands:

./configure
make
make install

3-Download mesa library and then compile it using the following commands: ./configure --prefix=install_directory

make realclean
make linux-fbdev
sudo make install

be careful when you choose the install_directory so that you don't overwrite the system's mesa library. after that compile your application using the options : -lGL -lOSMesa -ldl -L'install_directory/lib' -I'install_directory/include'

6
votes

Apparently is possible to have SDL running without X.

Basically, your kernel should have framebuffer support and you could use SDL on top of DirectFB.

These threads are ok:

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

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

4
votes

As you said, you need a driver to do this. 99.9% of all Linux graphics drivers use X11, so unless you have a DirectFB OpenGL driver for your hardware, you are stuck with using X11.

0
votes

I use the SDL (Simple Direct Media Layer) for OpenGL programming in Linux. This site has some nice tutorials to get you set up. One advantage of using SDL is that it will port across platforms, so once you get something running on Linux, it'll transfer right over to Windows so long as you have SDL installed there.

0
votes

You can use Mesa for framebuffer-based software rendering.