Hallo,
ich möchte eine Zoom- und Pan-Funktion in OpenGL implementieren. Das ganze funktioniert auch soweit. Meine SurfaceView class enthält einen TouchHandler und berechnet den Wert um den die ModelMatrix skaliert werden soll. Doch jedes Mal wenn ich erneut zoomen möchte springt das Objekt zuerst auf die Ausgangsposition zurück bevor gezoomt wird. Das gleiche gilt für die Pan-Funktion.
Kann mir jemand sagen, was ich ändern muss, damit von der aktuellen Position aus gezoomt wird?
Vielen Dank!
Hier ist mein Code-Snippet aus der Renderer-Klasse:
ich möchte eine Zoom- und Pan-Funktion in OpenGL implementieren. Das ganze funktioniert auch soweit. Meine SurfaceView class enthält einen TouchHandler und berechnet den Wert um den die ModelMatrix skaliert werden soll. Doch jedes Mal wenn ich erneut zoomen möchte springt das Objekt zuerst auf die Ausgangsposition zurück bevor gezoomt wird. Das gleiche gilt für die Pan-Funktion.
Kann mir jemand sagen, was ich ändern muss, damit von der aktuellen Position aus gezoomt wird?
Vielen Dank!
Hier ist mein Code-Snippet aus der Renderer-Klasse:
Code:
public class renderer implements GLSurfaceView.Renderer {
public float scale;
public renderer() {
Squares = new Objects();
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glScalef(scale, scale, 1); // Zoom
gl.glRotatef(-15.0f, 1.0f, 0.0f, 0.0f); // Rotieren im Perspektive zu erzeugen
Squares.draw(gl);
}