GeeXLab is a cross-platform tool for real time 3D prototyping, demos creation, game development, interactive applications and creative coding. GeeXLab is
available on all popular desktop platforms: Windows (32 and 64-bit), Linux (64-bit) and macOS. GeeXLab is also available for two popular SBCs (Single Board Computer): the Raspberry Pi
and its competitor from ASUS, the Tinker Board.
GeeXLab is based on widely used standards such as GLSL (OpenGL Shading Language), Lua and Python programming languages.
GeeXLab does not have a sophisticated graphical user interface with tons of menus and options. Instead, it relies on simple text files to store the code of a demo. GeeXLab does not force you to use a particular
structure and organization for the files. It's up to you to manage the files of your demo. You can have a single file that holds everything (XML nodes, Lua/Python scripts and GLSL programs) or you can split your
demo in several files (an XML for main structure, several Lua/Python files and several files for GLSL shaders). GeeXLab is flexible and you are free to organize things as you want!
GeeXLab offers a low level programming interface (or API). This low level API requires more lines of codes but allows a better control over the rendering. There is no scene graph management, it's up to
you to manage how and when your objects are rendered. GeeXLab scripting API has also high level functions like the loading of 3D models or textures. Here is a code snippet:
local aspect = screenW / screenH
camera = gh_camera.create_persp(60.0, aspect, 1.0, 1000.0)
gh_camera.set_viewport(camera, 0, 0, screenW, screenH)
gh_camera.set_position(camera, 2, 2, 4)
gh_camera.set_lookat(camera, 0, 0, 0, 1)
ground_tex = gh_texture.create_from_file("ground.jpg", 0, 0)
ground_mesh = gh_mesh.create_plane(100, 100, 10, 10)
-- texture_gpu_prog is a GLSL program defined in the XML file.
glsl_prog = gh_node.getid("texture_gpu_prog")
gh_camera.bind(camera)
gh_renderer.clear_color_depth_buffers(0, 0, 0, 1.0, 1.0)
gh_gpu_program.bind(glsl_prog)
gh_texture.bind(ground_tex, 0)
gh_object.render(ground_mesh)
Sounds easy, isn'it?
It's because GeeXLab is easy to use! And with higher level libraries available in Lua or Python, even a kid can code with GeeXLab :)
The best way to learn GeeXLab is to study and hack the demos provided in the Learn Sample Pack and to test them in GeeXLab.
Be sure to have a good text editor to quikly open and edit the demo's files.
Here are some good text editors for programming with GeeXLab
GeeXLab works like an internet browser: you load (or drag'n'drop) a source code file (the 3D scene) into GeeXLab and it plays it. That's all. You can also load a scene file using the command line.
The entry point is a XML file. This file simply holds the different scripts (Lua, Python, GLSL) that make up the 3D scene. There are several types of scripts:
That's why you will use several libraries of the scripting API (also called host API in some docs and articles) depending on the task to do: gh_node, gh_camera, gh_object, gh_mesh. gh_texture, and so on.
The entry point of all tutorials, documentation and help is the Routard Guide. The simplest way to get help is to post in GeeXLab forums. There is a forum in english HERE and a forum in french HERE. The scripting API reference guide for all functions you can use in Lua and Python is available HERE.