GUIs quirks and quacks

 

In the search of a ready-to-use GUI system, I came across several options, but in the end I have decided to make my own, simply because none of the options was completely fittable to my needs, specifically for the next reasons:

Maybe one of the most famous options. Looks very good and has official Python bindings.
I never managed to make it work in either Linux nor Windows. In Linux, after four hours of compiling, and a previously failed process due to missing dependencies, I gave up.
In Windows, the compiling took only two hours, only after I fixed some errors thanks to this instructions:

http://knightforged.com/cegui/

After finishing, I realized that the python bindings were not selected, so I started again, just to found severals errors raised for the lack of Boost. Unfortunately, I neither managed to compile the Python bindings for Boost.

 

Is recommended, looks promising and it appears to be usable from Python, but… It needs boost, so no further research on that.

Maybe not very well known like the others, but they are completely Python based, so no need for Boost. I tried to convert both to plain PyOpenGL, since SimplUI uses Pyglet’s event system (very different to mine) and BGEUI is based on Blender Game Engine and Fixed function (wich I won’t use), but after some days I realized that the effort needed for a conversion-integration into my engine would end up taking too much time. Maybe near to the time needed to make my own. So I gave up with pre-made solutions.

 

Result, after three days of work, the first screenshot of the first ‘Panel control’ of my GUI:

gui

Right now, the widgets support opacity and are stretched automatically. In the picture seen over a 3D duck with specular reflection. I have already one directional light. Current cost of the panel: 1ms

It only uses four vertices in a VBO and an index buffer. Then 3 unifforms for each control’s position/size, color and background image. This setup establish the possibility to render the GUI controls either as normal 2D ‘widgets’ or as 3D objects attached to the scene models and, with a little more work, controls could be rendered using instancing where available (all the GUI in one draw call).

and the gestation continues.

The march to the Penguin [Switching to Linux]

[Edit: removed stuff to go straight to the point]

My history with Linux has never been of success, because I had never been able to run a single ‘distro’ in none of my computers (all of them gone now, except the last [the Big] one), until very recently:

  • On Pentium 1 – Fail (none ran at all)
  • On Celeron D – Fail (only one entered to the desktop and froze there)
  • On Core2Duo – Fail (only Ubuntu entered to the desktop, and froze there)

Unfortunately I don’t remember the names of the versions I tried in the past, except Ubuntu. Anyway, this time I had a new and shiny graphics card that should at least solve the error I got the last time about my card not being capable of handling Unity desktop effects (on Ubuntu 10).

So, what requirements should I consider when searching for a Linux version? At the end it was very simple:

  1. Decent performance and compatibility in my two computers (yes, I’m poor but I managed to have two. Isn’t it great?!)
  2. Plenty of ‘apps’ in the repository (I don’t want to spend time compiling)
  3. Ease of use for a ‘noob’
  4. Modern look in the desktop (skinned, non flat nor squared controls, effects)
  5. 32 bits version (for the laptop)

Since the beginning I knew that one distro was already ahead of the others, simple because it is backed by a big company: Ubuntu, by Canonical.

But I am trying to escape from certain things that this company represents very well (and I didn’t liked Ubuntu desktop last time), so I started testing distributions. Specifically, this list made the testing process very easy and well informed:

http://www.techradar.com/news/software/operating-systems/best-linux-distro-five-we-recommend-1090058

Results in order:

DSL: Too much simple look. Hard to use for newcomers. Fast. Only works in the laptop.

Slax: Great. The main reason I kept trying. I would keep it, but only runs on the laptop.

Chakra: Discarded. Only 64 bits (But really wanted to try it).

Debian: It never installed under Virtualbox, so I didn’t tried it more.

Mageia: Great feeling. But runs to slow in the laptop, and the available software is too few.

Manjaro: The second best. Gives me a great feeling and runs very fast in the Big one. Won’t run in the laptop (froze in the desktop).

Sabayon: Decent speed in the laptop. Does not run in the Big one (again, froze in the desktop).

Kubuntu: Since I liked the K-desktop, I tried this Ubuntu version. It ended up being perfect for me, and runs in both computers. With the Debian-like repositories available. But is from Canonical!

OpenSuse: Never finished downloading.

Kanotix | Knoppix: Before those ended downloading, I decided to stop testing.

I’m sure that the problems I had with the other Linux versions can be fixed, but I just need something to start working.  So now I’m Using Kubuntu. And even with the big list of software available for it, I have ended compiling stuff anyway, but it probed to be easy enough, yet, not fast.at all.

compiling oxygenKubuntu_oxygen

(Me compiling Oxygen Transparent, the first thing I compiled under my first Linux installation)