Estou trabalhando em um jogo que não pode ser executado em velocidade máxima em alguns dispositivos. No Tegra2, com muitas otimizações, o desempenho é próximo de 40 fps. O framerate é estável, mas as animações não são suaves o suficiente, então eu preciso de um vsync.
Com o Android SDK 2.3, podemos usar a biblioteca EGL nativamente. Então, eu tento usar eglSwapInterval, mas sem sucesso. No presente Livro GDC , parece que Tegra2 pode fazê-lo.
Ps: Thread.sleep () para forçar um FPS constante não é uma solução aceitável
Respostas:
De acordo com esta discussão em alguns benchmarks do opengl es, a maioria dos drivers de dispositivos simplesmente ignora o eglSwapInterval, mas o tegra2 deve ter o vsync ativado por padrão (e o eglSwapInterval pode ser usado para desativá-lo).
Talvez a taxa de vsync no seu dispositivo seja tal que sua gagueira ocorra às vezes atingindo, às vezes perdendo o tempo do quadro? Você já tentou se a desativação do vsync realmente melhoraria?
fonte
Publicou uma amostra fazendo 30FPS usando a API do coreógrafo. https://github.com/googlesamples/android-ndk/tree/master/choreographer-30fps Isso funciona para você?
fonte