libGDX 1.9.8 released

libGDX 1.9.8

Mr. Tomski has graced us with another release, all on his own! Here’s what’s new.

Included in 1.9.8 are a few minor fixes, as well as some hot fixes for box2d build errors from 1.9.7.

Support for iPhoneX by default in new projects was added. For existing projects you can just add the launch images as shown in this commit

We’ve also updated to Bullet 2.87.

And it wouldn’t be a libGDX release without at least one breaking change! FrameBuffers ‘basic’ constructors are back, no more static methods to instantiate basic versions of FrameBuffers.
This is to make it easier for subclassing and extension. See for discussion.


- Add iPhoneX images
- Fix MacOS issue with GL_ARB_texture_float extension check
- Fix AtlasTmxMapLoader tileset tile id offset
- Bullet: updated to 2.87, see:
- API Addition: Possibility to specify TexturePacker settings for resampling when scaling.
- API Addition: Support for customizing render buffer attachments in GLFrameBuffers
- API Change: Revert to constructors for GLFrameBuffers for easier customization

Happy coding,
The libGDX team

libGDX 1.9.7 released

libGDX 1.9.7

Update time. All brought to you by Tomski, marking the first time in libGDX history that someone else did the release!

Heres ya loot drops.

Important and breaking changes

GLFrameBuffer has been refactored

For creating standard FrameBuffers, FloatFrameBuffers, and FrameBufferCubemap use the new static methods in the respective classes.
For creating custom FrameBuffers, use the respective FrameBufferBuilder.

An example for building a custom FrameBuffer with multiple colour attachments and a depth attachment:

GLProfiler has been refactored

In order to support Lwjgl3, GLProfiler has been refactored to be instance based instead of static.
Create an instance of GLProfiler by passing in the Graphics interface. Feel free to make the instance you obtain static.


- Update to MobiVM(RoboVM) 2.3.3
- Add iOS 11 support
- Update to Lwjgl 3.1.3
- Update to MOE 1.4.0
- API Change: GLFrameBuffer has been refactored Create standard FrameBuffers with static methods. Customized FBOS with FrameBufferBuilder
- API addition: Tiled group layer support 
- Fix Tiled properties, offset parsing for image layers
- API addition: Added utility methods for Vector equals with epsilon
- Fix Animation backing array type
- Fix Mesh copying with 0 indices 
- Fix restoration of pooled particle effects scale
- Fix loss of controller listeners on reconnect
- Added basic kotlin project generation support in the setup tool
- API addition: Allow APK expansion to be used in fragments and activities
- API addition: Added color properties support from tiled maps
- API Change: Added rotation vector sensor support on Android
- API Change: GLProfiler refactored for OOP and lwjgl3 multi windows
- LWJGL3: The creation of additional windows via Lwjgl3Application.newWindow() is now deferred, with postRunnable(), until all existing windows have been updated. This fixes a potential native crash with NVidia GL drivers on Windows, presumably caused by a GL context conflict.
- API addition: Lwjgl3WindowListener.created() is called after a new window has been created. It's unsafe to call Lwjgl3Window functions in between Lwjgl3Application.newWindow() and this callback.
- Updated LWJGL3 backend to 3.1.3.
- Lwjgl3Graphics.setUndecorated() and Lwjgl3Graphics.setResizable() now delegate their work to the respective GLFW functions.
- API addition: ProgressBar.isVertical() - returns whether a progress bar is vertical or horizontal.
- API Change: SplitPane now by default does not allow the split amount to shrink children below their minimum sizes (cropping them). This behavior can be reverted by overriding clampSplitAmount or wrapping the children in Containers set to minSize(0) and fill(). SplitPane also now correctly includes the handle min size in its own min size calculations.
- API Change: SplitPane.getSplit() renamed to SplitPane.getSplitAmount() to match other getter and setter names.
- Improved internal Timer synchronization.
- API Change: List#drawItem, added float width parameter.
- API Addition: Make it possible to disable sound on the GWT-Backend with disableSound=true.
- API Change: ScrollPane setWidget deprecated in favor of setActor to match other APIs.
- API Change: removed JGLFW backend
- Fixed mixed up use of TexturePacker.Settings.stripWhitespaceX|Y.
- Added joystick POV support to LWJGL3 controller backend.
- Added support for 2d particles sprite animation.
- API Change: ParticleEmitter getSprite, setSprite, getImagePath, setImagePath are now getSprites, setSprites, getImagePaths, setImagePaths.
- Added support for 2d particles independant scale X and Y.
- API Change: ParticleEmitter getScale, matchSize are now getScaleX/getScaleY, matchSizeX/matchSizeY. Added scaleSize(float scaleX, float scaleY)

Happy coding,
The libGDX team

libGDX 1.9.4 released

libGDX 1.9.4

Summer’s almost over, time for a release! Here’s what’s new (plus a ton of bug fixes, see the commit logs on GitHub.

- Moved snapping from ProgressBar to Slider to prevent snapping when setting the value programmatically.
- Bullet: added btSoftBody#getLinkCount() and btSoftBody#getLink(int), see
- API Change: Wrapping for scene2d's HorizontalGroup and VerticalGroup.
- Fix hiero problem with certain unicode characters. See
- Switched to RoboVM fork 2.2.0, fixes incompatibility with Android Gradle plugin and iOS 9.3.4

Please update your projects as usual.

If you use MobiDevelop’s RoboVM fork make sure to update your Eclipse/IntelliJ IDEA/Android Studio plugin. It works with iOS 10 devices, but does not work with the Xcode 8 beta just yet.

In other news, Multi-OS Engine has been open-sourced by Intel. It’s now being maintained by its originator, Migeran, who previously sold the IP to Intel. We will update to the OSS version in the coming week(s) and do another release.

Happy coding,
The libGDX team