2011-01-17 11 views
1

Ich habe derzeit eine offene gl Renderer eingerichtet, die ein 2d-Quadrat und eine andere 2D-Form zeigt. Mit den Tasten kann der Benutzer das Quadrat links und rechts nach unten bewegen. Dies erfolgt durch Übersetzen des Quadrats basierend auf Werten, die dadurch verändert werden, ob der Benutzer nach links unten drückt, dh, wenn der Benutzer nach rechts drückt, würde dies eine Übersetzung von gl.glTranslatef bedeuten (rightdisplacement, 0, 0); usw. Das Uhrwerk funktioniert gut, aber ich kann nicht herausfinden, wie man die Kamera dazu bringt, dem Quadrat zu folgen, während es sich weiterbewegt. Ich möchte das Quadrat bewegen und die Kamera in die gleiche Richtung bewegen lassen.Kamerabewegung. Wie bewege ich die Kamera?

Antwort

1

Wenn Sie 2D Rendering machen, machen Sie wahrscheinlich einen Anruf an glOrtho irgendwo um Ihr Koordinatensystem zu definieren. Insgesamt Spekulation, aber Ihr Code könnte etwa so aussehen:

glOrtho(0, screenWidth, 0, screenHeight, -1, 1);

Hier können Sie Ihre Kameraposition zu definieren. Erstellen Kameraposition x und y-Position Variablen und stattdessen rufen

glOrtho(camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1); 

Stellen Sie sicher, dass diese für jeden Rahmen als die Kameraposition genannt wird natürlich ändern. Ihr Render-Code könnte etwa so aussehen:

// clear framebuffer 

glMatrixMode(GLES10.GL_PROJECTION);     
glLoadIdentity();   
glOrtho(camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1); 

glMatrixMode(GLES10.GL_MODELVIEW);     
glLoadIdentity(); 

// draw your stuff         
Verwandte Themen