It’s been a long time since we gave an update on DriftFX (we announced our PoC roughly 1.5 years ago) but I’m pleased to share with you that we’ve worked hard on it for the past half year to turn the PoC-Code into something we think will get v1.0 of DriftFX.
While our first implementation was focused on the usecase of the main sponsor (and is used in product already) we took the stuff we learned from it and hopefully came up without repeating mistakes we made in our PoC.
Before going into detail let me repeat what DriftFX is (and what it is not):
- DriftFX is an OpenJFX Node and an API to draw textures within this Node. (the textures could come from anywhere but the main focus is currently OpenGL)
- DriftFX provides transfer modes to bypass main memory for Windows and MacOS (the texture never leaves the GPU memory)
- DriftFX is NOT an OpenGL context creation/management library (use one of your own choice e.g. GLFW, ..)
- DriftFX is NOT an OpenGL API library (use one of your own choice e.g. LWJGL, JOGL, GLEW, ..)
- DriftFX is NOT a rendering or game engine, its sole purpose is the transport of rendered textures to OpenJFX
So let’s take a closer look what we worked on for the last couple of months:
- Rewrote the complete internal structure and moved as much code as possible to Java (formerly a lot stuff was in C++)
- Rewrote the complete API implementing a Swap-Chain approach allowing us to deal with the fact that the old API had to allocate textures on a per frame basis
- Provided a Java-API so that people don’t have to write Native-Code
- Provided an CPP-API which wraps the Java-API. It is distributed in source form, so no more linking against DriftFX binaries is needed.
- Because of the new Java-API direct support for LWJGL is available (there’s been an experimental LWJGL-Support provided by the LWJGL-maintainers)
- Moved the demos to its own repo, so that we may include samples which are not EPL.
- Demo Application running out of the box
- Building with GitHub-Actions and publishing p2 and maven artifacts
The video below shows a LWJGL-Demo we adapted to use DriftFX
You can find the source code of DriftFX at https://github.com/eclipse-efx/efxclipse-drift/ and our Demo-Project at https://github.com/BestSolution-at/efxclipse-drift-samples.
While we are still fixing some details, write some documentation we’d like to get feedback from the wider OpenSource-Community.