• Sam Lantinga's avatar
    Fixed bug #1026 · 62dddd62
    Sam Lantinga authored
     Vittorio Giovara      2010-07-16 19:09:28 PDT
    
    i was reading SDL_renderer_gles and i noticed that every time we there
    is some gl call the gl state is modified with a couple of
    glEnableClientState()/glDisableClientState.
    While this is completely fine for desktops systems, this is a major
    performace kill on mobile devices, right where opengles is
    implemented.
    Normal practice in this case is to update the glstate once, keep it
    always the same and disable/enable other states only in very special
    occasions.
    
    On the web there's plenty of documentation (on the top of my head
    http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Performance/Performance.html#//apple_ref/doc/uid/TP40008793-CH105-SW5
    ) and i personally tried this.
    I modified my code and got a 10 fps boost, then modified SDL_render_gles and
    shifted from 40 fps to 50 fps alone -- considering that i started from ~30fps i
    got an 80% performance increase with this technique.
    
    I have attached a dif of my changes, hope that it will be included in
    mainstream.
    62dddd62
SDL_renderer_gles.c 30.5 KB