2012-05-18 3 views
6

Ich habe versucht,Wie ändert man den Inhalt eines FloatBuffers, um die Leistung zu halten?

floatbuffer.put(float[]); 

verwenden, aber, wie ich mehr als 200 Plätzen am Umgang, alle mit diferent Texturkoordinaten, die jeden Rahmen aktualisiert werden, meine fps drastisch sinken, und das Spiel wird zu weit flüssig zu sein.

y dachte die Methode erwähnt auf badlogicgames.com, über, stattdessen Floatpuffer verwenden, verwenden Sie einen intbuffer aber, ist das gleiche, gleich langsam im Moment der Methode "Put" des Puffers.

also, wie könnte ich alle meine Floatpuffer mit einer besten Leistung aktualisieren?

EDIT: Ich habe mein Problem gelöst, die "put" -Methode selbst ist nicht langsam, das Problem ist, wenn ein neuer Float für jeden Floatpuffer initialisiert wird, statt dessen ändere ich einfach den Wert jedes enthaltenen Elements der Floatarray und das vermeidet viele GC Aktivitäten .. naja ich denke.

Antwort

1

Es gibt verschiedene Möglichkeiten, die Leistung zu verbessern. Kurz gesagt, hier sind ein paar:

1) Initialisieren der floatbuffer und eine eine Transformation jeder jeden Rahmen anwenden: - Wenn Ihre Quadrate über den Bildschirm bewegen, legen Sie sie einmal in einem floatbuffer, und dann eine separate Matrix anwenden Transformation zu jedem. Bei dieser Methode füllen Sie den Float-Puffer einmal und aktualisieren die Transformationen in jedem Zug.

2) Setzen Sie nur eindeutige Formen in den floatbuffer - Wenn eines Ihrer Quadrate Duplikate voneinander sind, rufen Sie den gleichen Puffer jedes Bild auf, um Speicher zu sparen.

3) Verwenden Sie Vertex Buffer Objekte und Index Buffer Objekte - Es klingt wie Sie dies getan haben, aber speichern Sie die Daten in einem Vertex-Puffer, und rufen Sie die Scheitelpunkte mit den Indizes des Arrays. Wenn Sie immer noch Probleme haben, empfehle ich einen Blick auf dieses Tutorial: http://www.learnopengles.com/android-lesson-one-getting-started/

Verwandte Themen