Estoy trabajando en un juego que no puede ejecutarse a toda velocidad en algunos dispositivos. En Tegra2, con muchas optimizaciones, el rendimiento es cercano a 40 fps. La velocidad de fotogramas es estable, pero las animaciones no son lo suficientemente suaves, por lo que necesito una sincronización virtual.
Con 2.3 Android SDK, podemos usar la biblioteca EGL de forma nativa. Así que trato de usar eglSwapInterval pero no tengo éxito. En este documento de GDC , parece que Tegra2 puede hacerlo.
Ps: Thread.sleep () para forzar un FPS constante no es una solución aceptable
Respuestas:
De acuerdo con este hilo en algunos puntos de referencia de opengl es, la mayoría de los controladores de dispositivos simplemente ignoran eglSwapInterval, pero tegra2 debería tener vsync habilitado por defecto (y eglSwapInterval puede usarse para deshabilitarlo).
¿Quizás la tasa de sincronización en su dispositivo es tal que su tartamudez proviene de golpear a veces, a veces perder el tiempo de cuadro? ¿Has probado si deshabilitar vsync realmente mejorará las cosas?
fuente
Publicó una muestra haciendo 30FPS usando la API de coreógrafo. https://github.com/googlesamples/android-ndk/tree/master/choreographer-30fps ¿ Eso funciona para usted?
fuente