studio Escritura de juegos opengl-es en tiempo real para Android: alguna pregunta(optimización)



manual de programacion android (1)

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

Deberías usar un sistema delta de tiempo. Hay muchos 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értices, los FPS caen a 30-40 FPS, desde 60 FPS. (prueba en un teléfono galaxy S i9000). ¿Hay alguna manera de que mi juego FPS sea de 30 FPS? ¿Es bueno actualizar mi juego a 30 FPS, o no necesito manejar esto? (porque habrá un retraso en FPS más bajo, será lento)

Eso depende de qué método estés usando. Si es 3D, debería considerar usar Vertex Buffer Objects ( VBO:s ) (como una 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 en cada iteración.

Si es 2D, aún 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 lento).
  • Vertex Buffer Objects (el más rápido en 3D, más lento que draw_texture en 2D).
  • draw_texture extension (el más rápido en 2D, pero no renderiza cosas en 3D).

Puede admitir todos estos métodos para cubrir toda la gama de dispositivos Android, pero recuerde comprobar las extensiones de los controladores OpenGL del dispositivo. Algunos pueden ser compatibles con todos estos, pero puede haber dispositivos que solo admiten Vertex Arrays y VBO:s (por ejemplo).

He respondido una pregunta relacionada aquí , pero solo para mostrarte; Aquí hay una copia impresa de una de las conferencias de Chris Pruett en Google I / O:

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

No puedes. Android es un sistema operativo multiprocesador y no tienes idea de lo que está pasando (¿quizás otra aplicación de Service se está actualizando?). Lo que puedes hacer es usar un sistema delta de tiempo, como mencioné anteriormente.

¿Cuál es la mejor manera: hacer el phisyx, y todo el stupp en onDrawFrame, o: iniciar un hilo de lo que se hizo las matemáticas para mí? ¿Qué es más rápido y mejor?

Se recomienda multihilo (dos Thread ejecutan en paralelo). En breve, haga su trabajo de dibujo dentro de onDrawFrame y actualice cosas dentro de su propio Thread / Runnable creado.

Recursos recomendados:

1.

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

2.

En mi juego tengo 20 elementos (moviendo vértices cuadrados), cuando se trata de 60-70 vértices, los FPS caen a 30-40 FPS, desde 60 FPS. (prueba en un teléfono galaxy S i9000). ¿Hay alguna manera de que mi juego FPS sea de 30 FPS? ¿Es bueno actualizar mi juego a 30 FPS, o no necesito manejar esto? (porque habrá un retraso 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 todo el stupp en onDrawFrame, o: iniciar un hilo de lo que se hizo las matemáticas para mí? ¿Qué es más rápido y mejor?





opengl-es