GeeXLab released for Windows 64-bit: Zip Files, Python 3, and much more

GeeXLab 0.26+


1 – Release Highlights

The new GeeXLab is available, but for Windows 64-bit only. Linux, Raspberry Pi, Tinker Board and macOS versions will follow a little bit later, with a priority for the Linux PC version.

From GeeXLab 0.26+ onward, the Windows 32-bit version won’t get new updates anymore. Many libraries, drivers and other pieces of code, are no longer available for Windows 32-bit. That gives me a nice excuse to stop the maintenance of the Windows 32-bit platform.

GeeXLab comes with the following new features:
– zip files support
– Python 3
– memory buffers
– SQLite3 BLOBs
– ImGui TTF fonts and primitives
– vertex buffers…

Let’s look more in details at these new things.


1.1 – Zip Files Support

Compressed zip files are finally supported by GeeXLab. It’s therefore possible to store most of the data required by a GeeXLab demo / application in a zip file.

And best of all, it’s even possible to package the whole demo in the zip, including the main XML file. Super convenient for a demo: a zip that the user just drops in GeeXLab. Simple and neat.

All details about zip support are available HERE (french) and HERE (english).


1.2 – Python 3

So far, the scripting support was limited to Lua and Python languages. It’s still the case today, but with a small difference: Python 3 is now in the game. In previous versions of GeeXLab, only Python 2 (v2.7) was supported. GeeXLab is now up to date and Python 3 (v3.7) is fully supported.

Fun fact, both versions of Python can coexist in the same demo. For GeeXLab, Python 2 and Python 3 are two different languages, like Lua. So a GeeXLab demo can now be coded with 3 languages at the same time…

All details about Python 3 support are available HERE (french) and HERE (english).

GeeXLab - Python logo


1.3 – Memory Buffers

Memory buffers are a consequence of the support of zip files. It is now possible to create a buffer in memory from the contents of a file on disk, from a file in a zip archive, an SQLite3 blob or simply ex nihilo by specifying a size in bytes.

A memory buffer is just a block of bytes that can contain anything. This buffer is readable and writable and the granularity of the read / write operations is the byte.

These buffers are accessible through a real pointer C. What? At the scripting level, it’s just an identifier like any other but I think it’s interesting to mention it.

Many new functions have been added to manage these memory buffers in many libraries.

All details about memory buffers are available HERE (french) and HERE (english).


1.4 – SQLite3 BLOBs

Support of SQLite3 BLOBs is here. The BLOB is one of the basic data types of the SQLite3 engine (with text, integer and double). A BLOB field type can contain anything and everything. It’s the same thing as memory buffers. It is therefore possible to store / fetch text, .jpg images, Lua or Python code, anything you want.

All details about SQLite3 and BLOBs are available HERE (french) and HERE (english).

SQLite3 logo


1.5 – ImGui TTF fonts and primitives

In addition to new convenient functions like this one, GeeXLab 0.26+ finally adds support for True Type Font (TTF) fonts in ImGui. You can now load multiple TTF fonts and use them whenever and wherever you want. And believe me, it radically changes the look of your GUI!

Primitives? a primitive is the scientific name … given to a line, quad, circle, Bezier curve. And yes, ImGui supports this kind of geometric primitives and GeeXLab 0.26+ serves them on a silver platter.

More details about ImGui, TTF fonts and primitives can be found HERE (french) and HERE (english).

GeeXLab - ImGui, TTF fonts and Primitives, Bezier Curves


1.6 – Vertex Buffers

Don’t be fooled by the title. Vertex buffers are not new to GeeXLab, they are used everywhere, everything is rendered with vertex buffers. GeeXLab 0.26+ comes with a new library (Lua and Python) that allows to manage and manipulate simple vertex buffers: gh_vb.

The goal is to offer a simple interface to create yourself vertex buffers and render them as you want. Do you want to create a disk and draw it with TRIANGLE_FAN mode or render lot of STRIP lines? If so, no problem, all of these things are possible with the vertex buffers and the gh_vb library.

More details about vertex buffers can be found HERE (french) and HERE (english).

GeeXLab - Vertex buffer, disc, triangle fan


2 – Changelog

Full changelog from beginning of time is available HERE.

Version - 2018.12.11
+ (2018.12.11) added buffer_read_{1,2,3,4}f() and buffer_write_{1,2,3,4}f() 
  to gh_utils lib (lua, python).
+ (2018.12.10) added add_font_from_buffer() to gh_imgui lib (lua, python).
+ (2018.12.10) added draw_triangles_strip() and draw_triangles_fan() to gh_renderer (OpenGL).
+ (2018.12.10) added texture_create_from_buffer() to gh_imagemagick lib (lua, python).
+ (2018.12.10) added create_empty() and add_shader_from_buffer() 
  to gh_gpu_program lib (lua, python).
+ (2018.12.10) added execute_from_buffer() to gh_utils lib (lua, python).
+ (2018.12.10) added create_from_buffer() to gh_texture lib (lua, python).
+ (2018.12.10) added create_from_buffer() to gh_font lib (lua, python).
+ (2018.12.10) added db_bind_blob_from_buffer() to gh_sqlite3 lib (lua, python).
+ (2018.12.08) added zip_to_file(), buffer_to_file(), zip_buffer_create(), 
  zip_buffer_kill(), file_buffer_create(), file_buffer_kill(), buffer_create(),
  buffer_kill(), buffer_read_byte(), buffer_write_byte() and buffer_read_line() 
  to gh_utils (lua, python).
+ (2018.12.08) added create_cube_from_zip_file() to gh_texture lib (lua, python).
* (2018.12.08) fixed zip management in gh_model.create_from_zip_file_loader_assimp().
* (2018.12.08) fixed memory leaks related to zip management.
! (2018.12.07) improved zip file management and script source code loading.
+ (2018.12.06) added add_font_from_zip_file() to gh_imgui lib (lua, python).
+ (2018.12.04) added Python 3 support via a new plugin. Python 2 and Python 3 scripts 
  can run together in a GeeXLab app.
! (2018.12.04) updated ImageMagick plugin with latest SDK 7.0.8-15. Enabled Q8 and disabled HDRI.
! (2018.12.04) updated PkysX plugin with latest SDK version (December 2018).
! (2018.12.04) updated SQLite3 with version 3.26.0.
! (2018.12.04) updated OpenVR plugin with latest OpenVR SDK 1.1.3
! (2018.12.04) updated Assimp plugin with latest github snapshot (2018.12.04).
! (2018.12.04) updated FreeImage plugin with latest version 3.18.0.
+ (2018.12.04) added exe_string() to gh_utils lib (lua, python).
+ (2018.12.03) added sound_create_from_sqlite3_blob() to gh_audio lib (lua, python).
+ (2018.12.03) added create_from_sqlite3_blob() to gh_font lib (lua, python).
+ (2018.12.03) added create_from_sqlite3_blob() to gh_texture lib (lua, python).
+ (2018.12.03) added do_file_from_sqlite3_blob() to gh_utils lib (lua, python).
+ (2018.12.03) added db_column_get_blob(), db_column_blob_to_file(), db_column_blob_to_string(), 
  db_bind_blob_from_file() and db_bind_blob_from_string() to gh_sqlite3 lib.
+ (2018.12.02) added db_bind_text(), db_bind_int(), db_bind_double() and 
  db_bind_blob_from_file() to gh_sqlite3 lib (lua, python).
+ (2018.11.28) added do_file_from_zip(), get_demo_zip_filename() and extract_dir_from_filename()
  to gh_utils (lua, python).
+ (2018.11.28) added sound_create_from_zip() to gh_audio (lua, python).
+ (2018.11.28) added create_from_zip_v1() to gh_font (lua, python).
+ (2018.11.28) added texture_create_from_zip_file() to gh_imagemagick (lua, python).
+ (2018.11.26) added add_font_from_file(), rebuild_all_fonts(), push_font(), 
  pop_font(), set_default_font() and reset_default_font() to gh_imgui lib (lua, python).
+ (2018.11.25) added vendor_id_to_vendor_name() to gh_utils (lua, python).
+ (2018.11.24) added get_gpu_arch_data(), update_v2() to gh_gml library (lua, python).
+ (2018.11.23) added new functions to gh_gml library to get GPU power information (lua, python).
+ (2018.11.23) added get_cursor_screen_pos(), get_cursor_pos(), dummy(), set_window_focus(),
  add_line_to_drawlist(), add_bezier_curve_to_drawlist(), add_circle_to_drawlist() 
  and add_quad_to_drawlist() to gh_imgui lib (lua, python).
! (2018.11.22) updated ImGui with version 1.66 release.
+ (2018.11.21) added get_base_boost_clocks() to gh_gml lib for NVIDIA GPUs.
! (2018.11.14) changed the title bar content: first the demo title, then the GeeXLab version, 
  and rendering speed + renderer name et the end.
* (2018.11.14) bugfix: a wait_for_gpu() has been added before calling the TERMINATE script. 
   This bugfix is particularly useful for Vulkan demos where the resources were not properly destroyed.
! (2018.11.14) updated SQlite3 engine with latest version 3.25.3.
! (2018.11.06) GPU monitoring plugin compiled with latest AMD ADL SDK.
* (2018.11.05) fixed a bug in the GPU usage reading of some AMD Radeon GPUs.
* (2018.10.31) Vulkan plugin: fixed bug in swapchain resizing when 
  the 3D window is minimized. Fixed minor bugs in texture layout transistion.
! (2018.10.31) Vulkan plugin: compiled with latest headers (v1.1.90).
! (2018.10.24) updated OpenVR plugin with latest OpenVR SDK .0.17
+ (2018.10.24) added clipboard_set_text() and clipboard_get_text() to gh_utils.
! (2018.10.23) updated SQlite3 engine with latest version 3.25.2.
+ (2018.10.23) added time_to_hour_min_sec() to gh_utils.
+ (2018.10.23) added file_sha256() to gh_utils lib.
+ (2018.10.22) added file_md5() and file_sha1() to gh_utils lib.
+ (2018.10.10) added file_crc32() and file_checksum() to gh_utils lib.
+ (2018.10.10) added load_textures_from_zip() to gh_model lib.
+ (2018.10.04) added create_from_zip_file_loader_assimp() to gh_model lib.
+ (2018.10.04) added create_from_zip_file() to gh_gpu_program lib.
+ (2018.10.04) added zip file support in gpu_program xml node.
+ (2018.10.02) added create_from_zip_file_v1() to gh_texture lib (lua, python).
+ (2018.09.30) added math_quat_from_vectors_rotation() and math_quat_from_lookat()
  to gh_utils lib (lua).
+ (2018.09.22) added GL_TEXTURE_CUBE_MAP_SEAMLESS to gh_renderer.enable_state().
+ (2018.09.16) added error messages for mesh instancing initialization 
+ (2018.09.15) added new lib (gh_vb available in lua and python) to create 
  and render vertex buffers. 
+ (2018.09.15) added draw_lines_strip() and draw_lines_loop() to gh_renderer (lua, python).
+ (2018.09.15) added uniform_modelviewproj_matrices(), set_uniform_camera_matrices_v2()
  and upload_uniforms() to gh_gpu_program (lua, python).
! (2018.09.12) updated ImGui with version 1.66 WIP.
+ (2018.09.12) added sanitize_string() and printc() to gh_utils (lua, python).
+ (2018.09.11) added run_compute_group_size() to gh_gpu_program lib (lua, python).
! (2018.09.10) small changes in the Lua Hello! framework (GeeXLab libs folder).
+ (2018.09.03) added read_physx_info() to gh_physx3 lib (lua, python).

Leave a Comment

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