2012-05-18 9 views
6

He intentado usarcómo cambiar el contenido de un FloatBuffer, manteniendo el rendimiento?

floatbuffer.put(float[]); 

pero como yo estoy manejando más de 200 plazas, todas con coordenadas de texturas diferentes que se actualizan cada cuadro, mi fps caer drásticamente, y el juego se vuelve demasiado para ser fluida.

y pensamos que el método mencionado en badlogicgames.com, acerca de, en lugar de usar floatbuffer, usa un intbuffer pero, es lo mismo, igual de lento en el momento del método "put" del buffer.

Entonces, ¿cómo podría actualizar todos mis flotadores con el mejor rendimiento?

EDIT: he resuelto mi problema, el método "put" en sí no es lento, el problema es cuando se inicializa un nuevo float para cada floatbuffer, en lugar de eso, simplemente cambio el valor de cada elemento contenido en el floatarray y eso evita muchas actividades de la GC ... bueno, creo.

Respuesta

1

Existen varias formas de mejorar el rendimiento. En pocas palabras, aquí están algunas de ellas:

1) Inicializar el floatbuffer y un aplicar una transformación de cada uno cada cuadro: - Si sus plazas están moviendo a través de la pantalla, colocarlos una vez en un floatbuffer, y luego aplicar una matriz separada transformación a cada uno. En este método, llenas el floatbuffer una vez, y simplemente actualizas las transformaciones cada turno.

2) de venta sólo formas únicas en el floatbuffer - Si alguna de sus plazas son duplicados de uno al otro, llamar al mismo tampón cada cuadro para conservar memoria.

3) Uso Vertex Buffer Objetos y el Índice de búfer Objetos - Suena como que podría haber hecho esto, pero almacenar los datos en un búfer de vértices, y llamar a los vértices utilizando los índices de la matriz.

Si todavía tiene problemas, recomiendo echar un vistazo a este tutorial: http://www.learnopengles.com/android-lesson-one-getting-started/

Cuestiones relacionadas