1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

OpenGL Performance Guide?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kernle 32DLL, 13.01.2010.

  1. Kernle 32DLL, 13.01.2010 #1
    Kernle 32DLL

    Kernle 32DLL Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2010
    Hiho,

    Ich progge jetzt schon ein paar Wochen mit Android, und bastle mir quasi im moment eine kleine Minimal OGL-ES Engine dafür. Nichts besonderes, hauptsächlich um ein bisschen Erfahrung mit Android und OGL ES generell zu sammeln. Leider zwinge ich Emulator wie mein Testphone mit ein paar simplen Befehlen in die Knie. Entweder mache ich etwas grob falsch, oder der Emu wie das Phone sind noch schäwcher als ich befürchtet hatte.

    Darum wollte ich mal fragen ob es generell irgendwo so etwas wie einen Android & Open GL ES Performance Guide gibt. Für Android generell gibt es ja sowas zuhauf, aber eben nicht für OGL. Wäre klasse wenn da jemand was hätte. Um den Fall auszuschließen das ich irgendwie müll programmiert habe, hier die "Dreh und Angelpunkt" Funktion meiner App. Ist eine Funktion einer GL.Surface.Renderer Klassen Implementation und wird bei OnDraw aufgerufen. Sie zeichnet ein Recteck nach Bildschirm-Pixel Koordinaten.

    Code:
        public void DrawRect(int x , int y , int width , int height , GL10 gl)
        {
            gl.glPushMatrix();
            
                int XTranslation = FP_NEG_1 + FP.mul(FP.div(FP.div(width,FP_2) + x , intViewportWidth),FP_2);
                int YTranslation = FP_1 - FP.mul(FP.div(FP.div(height,FP_2) + y , intViewportHeight),FP_2);
                gl.glTranslatex(XTranslation , YTranslation , FP_0);
                gl.glScalex(FP.div(width,intViewportWidth), FP.div(height,intViewportHeight), FP_1);
            
            gl.glVertexPointer(3 , GL10.GL_FIXED , 0 , BUFFER_RECTSQUARE);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
            
            gl.glPopMatrix();
        }
    Die FP_... Variablen sind statische FixedPoint Ints mit den jeweils angegebenen Werten (z.b. 0, 1, -1 usw.). intViewportWidth und intViewportHeight sind ebenfalls FixedPoint Ints mit der Größe des aktuellen Viewport. BUFFER_RECTSQUARE ist ein statischer IntBuffer der Koordinaten für ein Bildschirmfüllendes Rechteck enthält. Ich benutze diese FixedPoint Lib. Als Parameter nimmt die Funktion natürlich ebenfalls FixedPoint Ints.

    Wenn ich nun DrawRect(FP_0 , FP_0 , 0, 0, intViewportWidth, intViewportHeight) mache, dann droppen meine FPS auf ca 25 runter (auf dem Phone 40). Als Phone benutze ich ein Motorola Milestone.

    So long,
    Kernle
     

Diese Seite empfehlen