FPS OpenGLES constantes do Android

Olá desenvolvedores do Android,

Estou desenvolvendo um jogo simples para Android no Eclipse usando o OpenGLES 1.0. Eu estou usando o Samsung Galaxy S2 Android (2.3) como um dispositivo para desenvolvimento.

E eu tenho uma pergunta sobre o dual core e fazer a taxa de quadros constante.

Então eu consegui criar o GLSurfaceView e substituir a função onDrawFrame () onde eu chamo a função LogicUpdate (deltatime) e a função Render ().

Sim, tudo em um único segmento por agora.

O problema que estou recebendo é com dual core. Se eu desabilitar o dual core indo em Configuração-> Economia de energia e verificação de economia de energia do sistema, percebo que a renderização é bloqueada automaticamente a 30 FPS. Mas se eu ativar o dual core desmarcando a Economia de energia do sistema, vejo que a renderização está bloqueada em 60 FPS, mas o telefone fica quente e drena a bateria muito rápido.

Então a ideia é manter meu jogo rodando a 30 FPS para economizar bateria.

Então para fazer isso eu uso o código abaixo.

Antes de fazer a atualização lógica, chamo essa paz de código, lembre-se de que tudo isso é feito em onDrawFrame ().

if( CONST_FPS > 0 && StartTime > 0 )
{           
    /////////////////////////////////////////////////////////////////
    // Get frame time
    ////////////////////////////////////////////////////////////////
    long endTime  = System.currentTimeMillis(); 
    long time     = endTime - StartTime;
    //              
    long wantedtime = 1000 / CONST_FPS;
    //
    long wait = 0;
    if( time < wantedtime )
    {
        wait = wantedtime - time;
        //                  
        Thread.sleep(wait);
    }
    else
    {
        //Time to big game will slow down
    }                           
}

Onde CONST_FPS = 30

E depois

StartTime = System.currentTimeMillis(); //

UpdateLogic(1.0 / CONST_FPS);
Render();

A jogabilidade a 30 FPS é muito suave, principalmente porque não precisa bloquear o FPS. MAS, ao tentar bloquear 60FPS a 30 FPS eu fico gaguejando. Eu fiz alguma pesquisa e descobri que Thread.Sleep () não é preciso. Isso é verdade? O que mais posso fazer para tornar o jogo mais suave ao bloquear 60FPS a 30FPS?

Obrigado pela resposta ...

questionAnswers(2)

yourAnswerToTheQuestion