Technical Information

How does it work?

General Discuss

Since Modlight is a school project, we couldn't do anything. We had choice between C and C++, and we choose the old one: C. We thought that learning C before C++ is better. The project has been developped on Linux comupter's. We've been willing to do great things under UNIX, which is too often told to be for dinosaurs...


3D engine and OpenGL stuff

The four view are using the same tool: OpenGL. It is obvious for 3D view, but it may be hard to understand for the others.At the beggining, we were looking for a tool do draw 2D viewports. We thought that something like Gnome canvas would be great.But when time comes to do the views, the man who handles the 3D stuff says that it would be easy to do with GL,...then he did...

In order to work with GTK (see below), we use a special thing called gtkglarea. It is a GTK component which can display OpenGL. It is used as a glut replacement.

Graphical User Interface(GUI)

We use GTK+ for this. It is an API developped for the GIMP. It is now a project by itself, and one of the most used GUI under X-Window. There is GTK for most programmation language, and even if if is an object API, in old languages like C.

Plugin system

Those use the dl library, which comes with GNU ld. They are in ELF format, so that this part should not be too difficult to port under Solaris, BeOS, *BSD...They are not fully useful yet.

POV Parser

Flex did the job...Flex is GNU's version of lex, a great UNIX tool to build parsers. Our parser cannot parse all POV files for now, he sometimes have problems on stuff we do not handle in the modeller.

Internal tree

The datas are stored in tree-form. The tree is a XML tree, which really simplifies the saving and loading operations. Then our data files are XML files. We use libxml for building, managing and storing the tree.

POV editor

This was made for providing to user more control on the scene. He will be able to see changes in generated POV files "LIVE"! We use a very cool GTK widget to do this: GtkEditor.