Android OpenGL gameloop fuera de OnFrame
Tengo un problema con la creación de gameloop para mi primer juego. He leído mucho sobre él pero todavía no puedo entenderlo. Se basa en OpenGL por lo que he utilizado onDrawFrame como un bucle de juego y funciona bien en mi teléfono. El problema es que onDrawFrame es el tiempo de actualización depende del hardware por lo que se ejecuta demasiado rápido en algunos dispositivos. Así que lo que quiero es agregar un bucle de juego por separado que se actualizará en un período constante de tiempo en todos los teléfonos inteligentes. (y onDrawFrame sólo se encargará de gráficos como debería)
Por ahora tengo:
- ¿Un runnable en un servicio se ejecuta en el subproceso de interfaz de usuario
- ¿Cómo dejar de ejecutar cuando la aplicación va a fondo?
- Actualización de la interfaz de usuario desde un servicio (mediante un controlador?)
- Mejor manera de esperar a que retrofit2 termine antes de continuar async
- Android: ¿Cómo puedo detener Runnable?
- myGameRenderer clase con todas las cosas openGl un onDrawFrame
- myGLSurfaceView que admite eventos táctiles
- myGameActivity
onDrawFrame activa la función myGameUpdate que controla las posiciones cambiantes de todos los objetos del juego dependiendo de la información de myGLSurfaceView
He intentado con la creación de nuevo Runnable pero no parece que funcione, no puedo averiguar cómo iniciar ese runnable y donde debería colocarlo (he intentado colocarlo en mi clase de GAMERenderer, pero didn ' Parece que funciona, nada se mueve:
private final Runnable mUpdateDisplay = new Runnable() { @Override public void run() { update(); }}; private void update() { //some update stuff blablabla //some update stuff blablabla mHandler.postDelayed(mUpdateDisplay,40); //to refresh at 25 fps }
pero supongo que no tengo la idea de que – quiero decir que crear este runnable. He intentado colocarlo en onCreateSurface para iniciarlo pero sin efecto. Entonces, ¿es la idea generall ok? ¿Y cómo iniciar el bucle? ¿Dónde colocarlo? ¿O debo usar cualquier otra forma?
- ¿Es esta Runnable a salvo de fugas de memoria?
- ¿Es este hilo seguro?
- Android: obtenga tiempo hasta que Runnable se ejecute a través de Handler
- Problema al descargar la imagen y actualizar la listaVista
- RemoveCallbacks no se detiene runnable
- ¿Cómo puedo cambiar la tasa o el período de una tarea repetida mediante ScheduledExecutorService?
- Android: Múltiples temporizadores en un ListView con manejador y ejecutables. 2 Problemas
- Contexto dentro de un Runnable
Ok, era simple – yo solo faltaba r.run (); Pero como siempre hay algo. Ahora funciona como yo quería – me refiero a los marcos no depende de hardware, pero todo no es tan suave como lo era – y parte de los objetos en 3d están parpadeando. Parece que algunos objetos visiblemente se dibujan más rápido, algunos más tarde y se ve feo. Entonces, ¿qué estoy haciendo mal? ¿Hay una mejor manera?
- método onResume no funciona para la implementación de Twitter
- Android como anfitrión de ATtiny85 Digispark