GeeXLab 0.29.6 released (win64, linux64, RPi)

GeeXLab 3D prototyping for Win64, Linux64, macOS, RaspberryPi and TinkerBoard


1 – Release Notes

GeeXLab is a maintenance version that improves the FFmpeg plugin, fixes some bugs in the Vulkan renderer and adds a new feature in ImGui module. GeeXLab is available for Windows 64-bit, Linux 64-bit and Raspberry Pi platforms.


FFmpeg plugin

I worked these last days on improving the FFmpeg plugin. Frame seeking works correctly now (but there is still work to do to improve it). Multithreading has been enabled on video decoding and GPU acceleration support using CUDA has been added. The CUDA GPU acceleration works for NVIDIA GPUs only. I also improved a bit the audio / video synchronization but I’m not fully satisfied. I think I will work again on that topic in the future.

FFmpeg logo


Vulkan plugin

I improved (and fixed) the command buffer management in the Vulkan renderer. Most of the recent crashes occurred during the window resizing where the swapchain needs to be recreated. When command buffers are recorded every frame, there was no crash. But when command buffers were built once and executed every frame, crashes can occur.

Vulkan API logo


imGuIZMO.quat support

imGuIZMO.quat is a widget for ImGui that allows to rotate / orientate a 3D object. It’s a virtual trackball. The nice thing with imGuIZMO.quat is that it requires a single line to rotate an object. The following code snippet shows how to rotate a mesh torus:

local modeDirection = 2
local cubeAtOrigin = 16
gh_imgui.imguizmoquat_gizmo3d_v1("##gizmo01", 100, modeDirection + cubeAtOrigin, torus)

A demo that shows imGuIZMO.quat in action is available in the OpenGL 2.1 demopack: d29-imgui/imgui-imguizmoquat/

GeeXLab - imGuIZMO.quat demo

imGuIZMO.quat is cool but unfortunately it does not compile on Linux (Linux mint 19.2 and g++ 7.4.0): the gcc/g++ compiler does not like the vGizmoMath.h file:

vGizmoMath.h:250:25: error: member ‘vgm::Vec3 vgm::Mat3::::::v0’ with constructor not allowed in anonymous aggregate
struct { VEC3_T v0 , v1 , v2 ; };

vGizmoMath.h:303:25: error: member ‘vgm::Vec4 vgm::Mat4::::::v0’ with constructor not allowed in anonymous aggregate
struct { VEC4_T v0 , v1 , v2 , v3 ; };

But I’m sure that imGuIZMO.quat’s author will fix this compilation issue in one of the next versions. Currently, imGuIZMO.quat is only available on Windows.


2 – Changelog

This changelog is intended for all versions of GeeXLab.

Full changelog from beginning of time is available HERE.

Version - 2019.11.18
+ (2019.11.18) added support of imGuIZMO.quat with a new function added in gh_imgui: imguizmoquat_gizmo3d_v1(). Currently imGuIZMO-quat is only available on Windows platform because of a compilation failure on Linux.
* (2019.11.17) [Vulkan plugin] improved and fixed swapchain resize code.
+ (2019.11.17) added vk_swapchain_has_changed() to gh_renderer for Vulkan renderer.
+ (2019.11.17) added bind_v2(), unbind_v2() and execute_cmd_buffer_v2() to gh_render_target for Vulkan renderer.
* (2019.11.17) fixed a buffer overflow bug in gh_mesh.instancing_set_position_rotation().
! (2019.11.14) [FFmpeg plugin] added set_option_1i(), video_init_texture_yuv420() and video_update_texture_yuv420() to gh_av_lib.
! (2019.11.11) [FFmpeg plugin / Windows] updated with snapshot ffmpeg-20191111 (v4.2.1).
! (2019.11.09) [FFmpeg plugin] frame seeking didn't work correctly near the end of video.
! (2019.11.07) [FFmpeg plugin] frame seeking now works even if video is in pause.
! (2019.11.05) [FFmpeg plugin] updated gh_av.seek_frame_time(). Video and audio streams are no longer reset if seeking time is equal to 0.

Leave a Comment

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