I'm talking about creating a specialized version of SkeletonSprite for your use case. The method responsible for creating and submitting meshes to the GPU is SkeletonSprite#render()
:
spine-runtimes/SkeletonSprite.as at 3.7
In it, we iterate through all slots and create meshes for each attachment in the slot. In the highlighted line above, we then submit that to the Starling painter which ensures the individual meshes are batched and submitted to the GPU.
As a first measure, you could adapt this class so that the meshes are only generated once in the first render()
call, stored in a list, and then re-used for subsequent render calls. This should get rid of any overhead stemming from calculating the mesh vertices on every render()
call.