[OpenGLES:glPushMatrix/glPopMatrix]

Unicate

Erfahrenes Mitglied
Ich komm mit dem push/pop warscheinlich noch nicht klar.
Eigentlich kann das ja nicht so schwer sein.

Ich möchte einen Hintergrund haben, dieser ist scrollbar (_background).
Auf dem Hintergrund befinden sich Objekte, die sich relativ zum Hintergrund bewegen (for-schleife)
und am Ende möchte ich eine FPS-Anzeige haben, die immer an der gleichen Bildschirmstelle ist.

orthogonale Darstellung

PHP:
        gl.glLoadIdentity();
        GLU.gluOrtho2D( gl, (int)_viewport.getX(), (int)_viewport.getWidth(), (int)_viewport.getY(), (int)_viewport.getHeight());
        gl.glPushMatrix(); // std matrix speichern
        _background.render(activity, gl); // hintergrund zeichnen
        for(RenderObject obj : _objects) {
        	gl.glPushMatrix(); // background matrix speichern
        	obj.render(activity, gl); // objekt zeichnen
        	gl.glPopMatrix(); // background matrix laden
        }
        gl.glPopMatrix(); // std matrix laden
        drawFps(gl); // fps-anzeige zeichnen

Wenn ich das so starte, dann bewegt sich das 2te Objekt nicht auf dem Hintergrund, sondern auf dem Bildschirm.
Das erste bewegt sich so, wie es soll.

die obj.render funktion pusht und popt gar nichts, deswegen mach ich's an dieser stelle


Wie macht man's richtig?
(Ich hoffe, die Erklärung kann man verstehen)
 
Ich sollte so spät vllt einfach nicht mehr programmieren.

Habs gefunden, ich muss nach der Projektionseinstellung auch in die Modelview wechseln

PHP:
gl.glLoadIdentity();
        GLU.gluOrtho2D( gl, (int)_viewport.getX(), (int)_viewport.getWidth(), (int)_viewport.getY(), (int)_viewport.getHeight());
        
gl.glMatrixMode( GL10.GL_MODELVIEW );
gl.glLoadIdentity();

//... hier jetzt der code
 
Zurück