How to create a gbm buffer under X.

To create a GBM buffer you first need to create a drm device and then use its device descriptor to create a gbm device. To do this under X you need a way to tell xserver which device you use to avoid permission issues. Here’s an example where I create a gbm buffer under X and then authenticate to the X server:

Continue reading How to create a gbm buffer under X.

Winnie: a framebuffer window system

A few weeks ago, I started a minimal window system, which performs software rendering on the linux /dev/fb0. My aim was to learn some systems programming and familiarize myself with concepts like event and device handling, memory management, window management, drawing on the framebuffer, IPC mechanisms etc (and certainly not to create a full linux window system! :)p) I call the program winnie and the code is available on github here: https://github.com/hikiko/winnie/tree/winnie.clients-as-plugins, https://github.com/hikiko/winnie and lp.

The program is not finished yet and I don’t know if I ever finish it, since I came up with new project ideas again.. Nevertheless, you can see some videos of the development stages below if you are interested (most recent first):

Continue reading Winnie: a framebuffer window system

Libgliar: a library that lies to the OpenGL programs about the OpenGL context information

libgliar — a library that lies to the OpenGL programs about the OpenGL context info (for Linux only). Code: bzr branch lp:libgliar

Continue reading Libgliar: a library that lies to the OpenGL programs about the OpenGL context information

How to build and test nux quickly

Arguments can be:

Example usage:

(or ./configure if you have already ran autogen)

you can find your nux installation files in /home/user/staging/install/nux ($PREFIX)

Now, if you want to test nux:

and then you can run any nuxplayground example from /bin/ *

A virtual keyboard

Some days ago I came up with the idea of a keyboard that can be used without having to type the letters. The user just stands in front of a camera and scrolls the letters by moving his head or hands to the appropriate direction…

And here it is:

Continue reading A virtual keyboard

New Stellarium features

As part of the ESA Summer of Code in Space 2011 I improved Stellarium planet rendering (here is a previous post about the project).

More specifically, the following features were added:

1) Procedural perlin noise (fBm) clouds.
2) Bump mapping with normal maps.

The improved rendering code is implemented with GLSL shaders, and requires shader model 3.0 capable graphics hardware.

Here is a video that shows the effects… (Unfortunately not the best quality video since gtk-recordmydesktop was not the best choice for recording!) Anyway, you can see the bump mapping and the clouds! πŸ™‚

Many thanks to the Stellarium development team and the ESA SOCIS organization team for giving me the opportunity to participate in the project! πŸ™‚

Stellarium planet rendering improvements.

Here are some screenshots of the new planet rendering in the Stellarium software, implemented as part of the European Space Agency Summer of Code in Space. I implemented a bump mapping algorithm (using normal maps) in GLSL shaders and I integrated it into the Stellarium application (C++). The planets are ellipsoids. There are still many different things to be done for further improving the project, these are just some samples.

(Many thanks to my mentor Fabien ChΓ©reau and the Stellarium development team for giving me the opportunity to participate in the ESA SOCIS, as well as to the organizers of the summer of code!!)*

Screenshots of the moon at night:

Moon using the past planet rendering algorithm
Moon without bump mapping.
Moon using the new planet rendering algorithm.
Moon with bump mapping.

Screenshots of the moon when there’s still daylight:

Moon without bump mapping.
Moon with bump mapping.
Moon using new rendering algorithm.
Moon with bump mapping.

Continue reading Stellarium planet rendering improvements.

Augmented reality snakeball game

A very simplistic snakeball game (not yet complete) I made for fun using C++, OpenGL and OpenCV πŸ™‚

In the video I use a flashlight to move the cursor and collect the balls that appear at random positions. I track the flashlight by locating the largest and brightest blob on each frame and calculating the center of its bounding rectangle.