Welcome to another nCine development update! As usual, there are a lot of new things to cover.
To extend the support to more devices and platforms I have ported the nCine to ANGLE. It was an easy task as I just needed to tell GLFW and SDL2 to use EGL and open an OpenGL ES 3.0 context on Windows.
With ANGLE the application would use Direct3D 11, overcoming any possible bug in old OpenGL drivers on old GPUs. It would also enable a future porting to UWP.
You have to sacrifice some performance, unfortunately. On my Intel i7-8850u with UHD 620 GT2 the
apptest_camera test is capable of rendering nearly 1.5x frames in 5 seconds when using the OpenGL driver instead of ANGLE.
When buffer mapping is enabled the performance takes a huge hit.
I have added Qt5 as a new desktop backend.
This will open more possibilities for tool developers, as they can now create a Qt5 interface and embed the nCine as a custom QOpenGLWidget.
Using Qt5 for the interface does not mean you can’t continue to use ImGui and Nuklear too. You can even use all three together if you so want, as the updated
If the Qt Gamepad library is found then gamepad events will be supported. I also decided to expose touch events to desktop applications, as both SDL2 and Qt5 support them.
Another big addition is the new file system API. It allows an application to manipulate paths, query file and directory attributes, copy, rename or delete files, create directories and inspect their contents and so on.
It works on all supported platforms as it features both a POSIX and a Windows API implementation.
It comes with a unit test that should assure everything works as expected and with a new apptest.
apptest_filebowser displays a file selection window made with ImGui that makes it easy to browse the file system.
It means it is not possible anymore to pass a
nullptr as a target in the HTML5 API and expect it will automatically choose a reasonable element. You have to be explicit and pass things like
As it is sometimes useful, it is now possible to multiply a vector by a matrix with the matrix on the right side of the multiplication.
C-style strings can now correctly be used as hashmap keys. Previously the key comparison code was comparing memory pointers instead of characters, making this type of strings useless with hashmap containers.
If you compile the engine statically you will have access to a couple of classes that save textures as PNG or WebP images.
It is all for now. See you for the next update!