Are there any performance reasons to use Starling?
Disclaimer : I started using haxe/openFL less than 2 years ago by converting a big as3 project that uses Starling, and I’m still working on it + another project that uses starling for now as well. I don’t have a lot of experience with “regular” openFL so I might have some things wrong : please correct me where needed
My main field is games : I do believe there are performance reasons to use starling yes, but it depends on what you want to do.
OpenFL is hardware accelerated for the most part, but every display object on screen will result in 1 draw call.
Then you have TileMap, which is high-performance but also comes with limitations : my understanding is that TileMap is kinda like Starling’s MeshBatch. If you want/need to use shaders or filters on a single “tile” then TileMap won’t work, as you would have to set the shader/filter on the whole TileMap.
With Starling, setting a shader or filter on a specific display object will add 1 draw call (2 in some cases I think), which should be fine unless you need lots of them at the same time.
There are probably other reasons, for example my big project uses Dragonbones for characters, which are made of several “bitmaps”. Unless the non-starling dragonbones implementation uses TileMap, it will result in as many draw calls as the number of elements in the skeleton while using starling all the elements should be in a single texture atlas (spritesheet), resulting in a single draw call.
For most apps regular openFL is probably the way to go, and the haxe version of Feathers doesn’t use Starling.
The differences (such as Dragonbones performance) could be closed between the two – there’s no technical limitation that makes Starling faster than OpenFL and there are certainly cases where OpenFL alone is faster than Starling
Areas where Starling may be faster (such as vector graphics) are TODO on the OpenFL side
Thanks for this answer, I was wondering the same. (back then, moving from non Stage3d to Stage3d via Starling made it so much faster). So your answer makes total sense.
When you mean vector graphics - is it graphics constructed using mesh, vertexdata etc. ?