Skip to content

Thelema vs LibGDX

Anton Trushkov edited this page Sep 19, 2020 · 13 revisions

Main goal of Thelema creation was to fix some LibGDX's limitations and add many features.

Thelema continues to support the LibGDX's idea of creating interfaces in the core module for the modules-backends, but it is also developing it to a greater extent. So now, there is more interfaces for different classes.

What was changed?

  • LibGDX can support only short-type indices for meshes. In Thelema you can choose any index type supported by OpenGL, including integer.
  • Thelema avoids use reflections. Reflections are not supported in some languages like C++ and tools like TeaVM, so it’s best not to get used to them.
  • Native code in core module (matrices multiplication, pixmaps) was replaced with kotlin/java implementations.
  • Thelema no longer has global objects such as Gdx.graphics or Gdx.gl20. They have been replaced by other global objects: APP, GL, FS and etc.
  • Creation of byte buffers and images has been moved to the interfaces for implementation on the module-backend side.
  • Frame buffers and textures are now more flexible objects, their formats specified by integers rather than enums.
  • In many places, enums replaced with integers for flexibility.
  • For now, 3d-animations are more flexible. There is interface for animation tracks, so you can create track for animation single float value or 3d-vector. Animation bones are now contained in object named Armature (named like in Blender).
  • File interfaces have methods for loading asynchronously (for web-applications or in separate threads).
  • Main 3d model format in Thelema is glTF 2.0.
  • Thelema uses standart collections, maps and their interfaces. LibGDX uses custom collections and maps, and they are have got problem with nested iterators.
  • LibGDX uses degress. Thelema uses radians as default angle unit, so internal converting to radians is not used.
  • LibGDX uses JOrbis for decoding Ogg Vorbis in LWJGL module. In Thelema JOrbis was replaced with J-Ogg.

Changes that have been made, but not comitted to repository yet:

  • GWT was replaced with TeaVM. TeaVM vs GWT comparision. Check live tests
  • Bullet Physics was replaced with ode4j.
  • Added support for loading glTF and PBR-rendering. This feature was exists for LibGDX but only in separate project
  • There is no default shader, like in LibGDX. It was replaced with GLSL nodes.
Clone this wiki locally