I have been developing a game for about 4 months now with monogame on desktop. And only recently i tried to debug on my phone again. Usually on my computer i get about
0,230 milliseconds per draw call with a 130$ graphics card. On my phone Samsung galaxy s5 mini, which has at least above average specs, i can not run at stable 60 fps at all. I get about
14-23 milliseconds on draw calls, averaging at 15, which is the absolute limit to 60fps, but with very often spikes. I am not drawing more than a background and a couple of particle engines with 20 tiny particles each, all 2D. Also I use the XNA content project to convert my .png’s to .xnb’s. Is this normal ? That is at least
50-120 times slower than my computer.
Is there something I am missing ? Because I am pretty sure that it can’t be that bad.
That depends on your computer and your phone’s specs. Now it shouldn’t be that bad, but still. That’s happening and that’s not right. I think.
I’ve spent almost 2 days running checks back and forth. Watch the fps I get on this screenshot from my phone. This is all i am drawing ~30-40 sprites, in a spritesheet, which is a simple font. and i get
~10ms draw() time and
0.04ms update() time. The
draw time is from 10-20ms!
In the screenshot i took i reset the “mill ellapsed max” every 8 seconds, so you can see it spiked to
15.66ms in less than 8seconds, and it is currently at 9.782ms per draw(). This can’t be right. What can i be doing wrong where it runs 150 times better on the pc and on android it is so slow ? My mind is blown. Also i only did Content.Load for 1 spritesheet 550x558 pixels, and the app takes 62MBs of ram at runtime ? How come ?
Can you post the project here so that we can sample it? There is also no specification on the kind of phone you are debugging with.
On my phone Samsung galaxy s5 mini, which has at least above average specs,
The project is nothing special. Simple spriteBatch.Draw calls in a single spriteBatch.Begin() - spriteBatch.End() from a 550x558 spritesheet that i have converted to an .xnb.