1. GetImage is the slowest command of them all.
2. When you use renderToImage you do not need Sync() after it you need it only once and the main loop (preferably at the -1 line of your loop)
3. We are basically talking about "static sprites" such as tiles for 2d landscape or clouds in the background that does not move at all, or maybe a chest of treasure where until the player does not open it, it has no self animation.
So lets say you have one hundred clouds at your scenery which are not "self" moving at all, you have 100 draw calls for each cloud.
But if you draw all the clouds at startup with render to image, then you cab use one big sprite for all of those clouds then you can one delete those cloud sprites or just hide them.
But static is not fun right?
So why not divide those 100 cloud sprites into some render to images ?
Then you tween those renderToImage sprites.
So you now for the example have 20 clouds on each renderImage Sprite, one is moving a bit right, one is moving a bit up others to other direction which will simulate moving clouds and prefred to be used with AppGameKit built on tweens.
So now, you have only 5 draw calls instead of 100 draw calls.
You need to think what you are going to use it.
For example for a player character with animation it wont reduce the draw calls, because it probably have some animations. And you need to draw it every animation frame. But if you have like 100 characters that are just the crowd like in Street Fighter (search for it if you dont know it) , these crowd characters are positioned in the same place and do not move however they do have animations each with its own individual animation but it is just crowd it has no interference in any kind with your game. There for instead of 100 crowd characters each with 30 frames of animations, you can render to image all of them for 30 times, each render to image is a frame of animation, then you get 1 sprite , 1 draw call, but, the frame of it is different every timeToAnimation you choose.
So the first option with clouds, 100 clouds sprites, is drawn only 5 times per frame.
And the Crowds are one draw call for 100 character
Where SetSpriteImage(crowdSprite,CrowdRenders[currentCrowdAnim] is placed in every frame, while you cycle the animations with inc currentCrowdAnim and when it gets to the last animation frame you start over with a simple if statement.
Nadav "Haliop" Rosenberg
Lets make the world great forever.