libgdx / gdx-liftoff

A modern setup tool for libGDX Gradle projects
Apache License 2.0
525 stars 48 forks source link

Update gdx-basis-universal to v1.0.0 #138

Closed metaphore closed 11 months ago

metaphore commented 11 months ago

Here's a little update for gdx-basis-univeral to the latest version.

There's one thing though, I recently found, that most of the modern texture compression formats are not accessible on iOS devices when using the classic robovm backend. Switching on to robovm-metalangle solves it. So this is a strong recommendation from the library, to couple it only with the latter. In my experience, it's hard to find downsides in migrating to robovm-metalangle. So it would be lovely if there was an option to somehow let users know about the preferred iOS backend when they opt in for this library.

tommyettinger commented 11 months ago

I see no problem with merging this. I don't know anything about the MetalANGLE backend, though, since I've never built any iOS app. Do you think MetalANGLE should be the default for iOS? Are there incompatibilities to be aware of?

metaphore commented 11 months ago

Can't say, I'm not a big expert on iOS backends either. I just spent the whole day trying to figure out why OpenGL on robovm backend doesn't allow specific features on the device where it's clearly supported (HW support for compressed textures to be exact). I didn't dig too deep, it's probably related to the whole OpenGL depreciation thing, so the API in a way stuck somewhere between 2.0 and 3.0 and (intentionally?) hides away some features. So using Metal should be the way to go. However, I know very little about it besides this little case. It's relatively fresh and probably has some little overhead, hard to tell yet. Unless libGDX itself won't promote it as the default backend, I wouldn't recommend that move. But looks very promising for sure.

But the question still stands, unless the users are specifically told to switch backend, they won't know they are in trouble until it's too late. Best to just solve the problem for them from the start. robovm-metalangle may not be the mainstream backend yet, but it's for sure a stable official one, should be totally safe to propose it as an alternative.

tommyettinger commented 11 months ago

I'll ask in the contributing channel on the Discord, see what other people think. I don't even know if robovm-metalangle is something you depend on in addition to RoboVM, or its own complete backend, or what...