GeeXLab 0.21.x Released for all Platforms, Assimp Support Added

GeeXLab logo

A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS). This version is a big maintenance update and, at the same time, adds the support of Assimp for loading many 3D file formats on all platforms.


1 – Release Highlights

Assimp 3D Object Loader Plugin
ImGui 1.54
PhysX 3.4.1
FFmpeg 3.4.1


1.1 – Assimp 3D Object Loader Plugin

GeeXLab 0.21+ comes with a new plugin for loading 3D objects. This new plugin (plugin_gxc_assimp_x{32|64}.{dll|so|dylib}) is based on the Assimp library. Assimp has been used in older versions of GeeXLab (many many years ago) but has been removed because at that time, it was not stable. Now Assimp seems stable: it compiles properly and works fine on all platforms. One of the nice thing with Assimp is that it supports many 3D formats including recent glTF.

To load an 3D object with Assimp loader, you can use these new functions:


A simple demo that uses Assimp to load 3D object can be found in the learn folder of the code sample pack:
learn/01-basic/11-loading-3d-model/main.xml or learn/02-intermediate/01-phong-lighting/main.xml.

The Assimp plugin is available on Windows, Linux, macOS, Raspberry Pi and Tinker Board.

GeeXLab Assimp 3D object loader


1.2 – ImGui v1.54

The ImGui support has been updated with latest version 1.54. Now all kind of colors can be customized via this function of the gh_imgui library:

gh_imgui.set_color(color_type, r, g, b, a)

All possible values for color_type are defined here: {GeeXLab folder}/libs/lua/imgui.lua

You can find a demo that shows how to change ImGui colors in the full code sample pack: gl-32/imgui/demo_06.xml.

Some new functions have been added in the gh_imgui lib (lua and python) for customizing the rendering of windows:
– gh_imgui.set_frame_border_size()
– gh_imgui.set_frame_rounding()
– gh_imgui.set_window_border_size()
– gh_imgui.set_window_rounding()

ImGui functions are available on Windows, Linux, macOS, Raspberry Pi and Tinker Board.

GeeXLab ImGui demo


1.3 – NVIDIA PhysX 3.4

The NVIDIA PhysX plugin has been updated to the version 2018.01.19. It’s one of the latest version of the 3.4 branch. The PhysX plugin has been updated on Windows, Linux and macOS.



1.4 – FFmpeg 3.4.1

FFmpeg… If you have already used the FFmpeg API, you can imagine what does it mean to update a code based on FFmpeg 2.86 (released two or three years ago) to latest FFmpeg 3.41. Using FFmpeg is not easy (I think, for example, to the video / audio synchronization) and some important functions in v2.86 have been deprecated in branch 3.x. And up to date code samples on how to use FFmpeg are not easy to find. Anyway, I managed to update the FFmpeg plugin to version 3.4.1, it seems to work and it’s the important thing. I just saw that a version 3.4.2 is available but it’s too late to update GeeXLab with it. FFmpeg 3.4.2 will be used in the next release of GeeXLab.

A simple demo that shows how to use FFmpeg plugin to play a video is available in the full code sample pack:

FFmpeg plugin demo


1.5 – ImageMagick 7.0.7-22

The ImageMagick plugin has been added to GeeXLab in version 0.19.0. This time I properly compiled ImageMagick in order to have JPEG and PNG support on all platforms. Because on some platforms (Linux / macOS), ImageMagick expects that jpeg and png dev libs are installed. If it’s not the case, ImageMagick is compiled without the support of those important image formats.

ImageMagick is available via a plugin (plugin_gxc_imagemagick_x{32|64}.{dll|so|dylib}) and can be used via the gh_imagemagick library in Lua and Python.

An example of how to use ImageMagick functions can be use the MagickView demo available in each version of GeeXLab in the apps/magickview folder.

ImageMagick logo


2 – Downloads

The latest version of GeeXLab as well as code sample packs can be downloaded from THIS PAGE.


3 – Changelog

Full changelog from beginning of time is available HERE.

Version - 2018.02.14
+ added list of all supported 3D formats by Assimp plugin in the log file.
! updated gh_utils.font_render(), gh_font.draw_text_2d() and gh_font.draw_text_3d() 
  to handle strings and numbers (lua only).
! [WINDOWS] PhysX plugin: removed the test of the PhysX version that could prevent PhysX
  demos from working on some systems.  
+ added stop_demo() to gh_utils (lua / python).

Version - 2018.02.10
+ added set_children_render_state() to gh_node lib (lua, python).
+ added list of all supported image formats by ImageMagick plugin in the log file.
+ added list of all supported 3D formats by Assimp plugin in the log file.

Version - 2018.02.06
! [WINDOWS] compiled with VS2017 v15.5.6.

Version - 2018.02.05
+ added ASSIMP plugin.
! updated ImageMagick with latest version
! updated ImGui with latest version 1.54 WIP.
! [WINDOWS / Linux / macOS] updated PhysX plugin with latest PhysX 3.4 SDK.
! updated FFmpeg plugin with version 3.4.1.
! [WINDOWS / macOS] updated FBX plugin with FBX SDK v2018.1.1.
! improved gh_imgui.set_color(): now all ImGui colors are supported.
+ added OpenEXR image support via TinyEXR. Images with tiles are not supported.
! update ObjLoaderV2 plugin with latest version of TinyOBJLoader.
! improved ObjLoaderV1 plugin.
! FFmpeg plugin: optimized a bit the video texture upload to GPU.
! renamed gh_object.average_vertices_normal() in gh_object.smooth_vertices_normal().
+ added is_any_item_hovered() to gh_imgui lib (lua / python).
+ added get_view_quaternion() to gh_camera lib (lua / python).
+ added set_frame_border_size(), set_frame_rounding(), set_window_border_size()
  and set_window_rounding() to gh_imgui lib (lua / python).
* fixed return code of gh_utils.webcam_start().
* fixed gh_gpu_program.create_from_shader_files().

Version - 2018.01.22
! updated Lua LFS 1.7.0.
+ added create_v3() and wtext_2d() to gh_font lib.

Leave a Comment

Your email address will not be published. Required fields are marked *