Escribir en tiempo real opengl-es de juego para Android – alguna pregunta (optimización)

1.

TIMING en un juego: ¿Hay alguna manera de usar otro entonces System.Currentmillis()-starttime>XX para actualizar algo en un juego? ¿Es seguro o CPU caro?

2.

En mi juego tengo 20 elementos (moviendo vértices cuadrados), cuando se trata de 60-70 vértice, el FPS bajar a 30-40 FPS, de 60 FPS. (pruebas en un teléfono galaxia S i9000). ¿Hay una manera de mi juego FPS será 30FPS? ¿Es bueno actualizar mi juego a 30 FPS, o no necesito manejar esto? (porque habrá un lagg en FPS más bajo – será lento)

¿Cómo puedo hacer para que mis objetos corran a la misma velocidad, en cualquier momento?

3.

¿cuál es la mejor manera: hacer el phisyx, y todos los stupp en onDrawFrame, o: iniciar un hilo lo que se hace la matemática para mí? ¿Qué es más rápido y mejor?

TIMING en un juego: ¿Hay alguna manera de usar otro entonces System.Currentmillis () – starttime> XX para actualizar algo en un juego? ¿Es seguro o CPU caro?

Debe utilizar un sistema delta temporal. Hay un montón de tutoriales sobre esto. Este es un muy buen tutorial: deWiTTERS Game Loop .

En mi juego tengo 20 elementos (moviendo vértices cuadrados), cuando se trata de 60-70 vértice, el FPS bajar a 30-40 FPS, de 60 FPS. (pruebas en un teléfono galaxia S i9000). ¿Hay una manera de mi juego FPS será 30FPS? ¿Es bueno actualizar mi juego a 30 FPS, o no necesito manejar esto? (porque habrá un lagg en FPS más bajo – será lento)

Eso depende del método que esté usando. Si es 3D, debe considerar el uso de Vertex Buffer Objects ( VBO:s ) (como un Vertex Array pero en la memoria GPU de su dispositivo). Eso hace una gran diferencia ya que la CPU no necesita copiar los datos de la CPU a la GPU cada iteración.

Si 2D, todavía puede usar VBO:s pero si draw_texture es compatible con el dispositivo que se recomienda.

Sin embargo, las opciones son:

  • Vertex Arrays (más lentos).
  • Vertex Buffer Objects (más rápido en 3D, más lento que draw_texture en 2D).
  • draw_texture (lo más rápido en 2D, pero no renderiza 3D).

Puede soportar todos estos métodos para cubrir toda la gama de dispositivos Android, pero recuerde revisar las extensiones de los controladores OpenGL del dispositivo. Algunos podrían apoyar todos estos, pero puede haber dispositivos que sólo admiten Vertex Arrays y VBO:s (por ejemplo).

He respondido a una pregunta relacionada aquí , pero sólo para mostrarle; aquí está una impresión de una de las conferencias de Chris Pruett en Google I / O: dibujo

¿Cómo puedo hacer para que mis objetos corran a la misma velocidad, en cualquier momento?

No puedes. Android es un sistema operativo de procesamiento múltiple y no tienes idea de lo que está pasando (tal vez otra aplicación de Service se está actualizando?). Lo que usted puede hacer es utilizar un sistema de tiempo delta, como he mencionado anteriormente.

¿cuál es la mejor manera: hacer el phisyx, y todos los stupp en onDrawFrame, o: iniciar un hilo lo que se hace la matemática para mí? ¿Qué es más rápido y mejor?

Se recomienda multi-threading (dos hilos de ejecución en paralelo). En breve, haz tus cosas de dibujo dentro de onDrawFrame y actualiza las cosas dentro de tu propio Thread creado / Runnable .

Recursos recomendados:

  • Google I / O 2009 y Google I / O 2010
  • Desarrollo de juegos para Android: A Quick Primer
  • Open GL error de configuración incorrecta en Samsung S4
  • GLSurfaceView que causa ANR después de la actividad se destruye
  • Ejemplo 2D con OpenGL
  • Cómo cargar un objeto 3d en Android?
  • Cómo detener el procesador GL abierto
  • Android: GLES20: Se llama API OpenGL ES no implementada
  • (OpenGL ES) Los objetos alejados del centro de la vista se estiran
  • Juego gratuito de asignación
  • Página Curl Animation en Android con OpenGL-ES
  • Prevenga onPause de la basura OpenGL Context
  • Mezcla de vistas de Android y GLSurfaceView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.