OpenGL ES 2 - Schlechte Performance

  • Hallo,



    ich arbeite an einem 3D-Spiel mit OpenGl 2.0. Soweit läuft alles, jedoch sehr ruckelig. Meine einzelnen Models, welche sich in einer ArrayList befinden, werden in onDrawFrame einzeln mithilfe der Methode renderModel (siehe unten) an die Shader übermittelt. Ich habe herausgefunden, dass die einzelnen Models zwischen "0" - 2 Millisekunden benötigen, um ihre Daten an OpenGL zu übermitteln. Zusammengerechnet kommen da Werte von bis zu 100 ms pro Frame heraus, was ja nicht normal sein kann... (oder liege ich da falsch?)


    Die einzelnen zu übergebenen Daten werden in java.nio.Buffer-Instanzen (bzw. FloatBuffer, ...) gespeichert und dann direkt an GL übergeben. Hier mein Code:



    Das Model (Z. 3) ist eine Klasse, die die einzelnen Buffer und weiteren Eigenschaften bereit stellt.
    In den Zeilen 7 - 10 werden die einzelnen Matrizen zusammengerechnet.
    Anschließend werden die entsprechenden Parameter an OpenGL übergeben und gezeichnet.
    Danach werden die VertexAttribArrays deaktiviert, um das nächste Model zeichnen zu können.


    Shader:


    Fragment-Shader:


    In meinem Fragment-Shader wird nur die Farbe übergeben.



    In meinem Vertex-Shader wird diffuses und ambientes Licht berechnet (spekulares Licht habe ich momentan nicht eingebaut, da ich es nicht unbedingt benötige) und an den Fragment-Shader übergeben.
    Zudem werden Texturen-Koordinaten (TexPosition) an den Fragment-Shader übergeben.
    Zuletzt werden die Vertex-Koordinaten an GL übergeben.


    Vertex-Shader:


    Hat jemand eine Idee, woran das liegen kann?
    Liebe Grüße, Aaron

  • Moin,


    ich habe auch ein kleines Spiel in OpenGL geschrieben und habe zeitweise richtig viele objekte auf dem bildschirm !


    Ballerfisch


    allerdings benutze ich ausschließlich Texturen und Alphachannel für die Transparenz.


    Kann man deine App runterladen, um die mal auf anderen Geräten zu testen ?


    Gruß

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!