2014-02-21 91 views
0

我的代碼無法正常工作。圍繞對象中心的2d OpenGL旋轉

public void onDrawFrame(GL10 gl) { 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    // Here I translate the camera so that the point 0/0 will be at the 
    //bottom left of the screen 
    gl.glTranslatef(CameraX, CameraY, CameraZ); 
    // then I draw the object to rotate like many threads here said: 
    gl.glPushMatrix(); 
    // translate to the middlepoint of object 
    gl.glTranslatef(object.getPosX() + object.getWidth()/2, object.getPosY()    + object.getHeight()/2, 0); 
    // rotate 
    gl.glRotatef(30, 0, 0, 1);    
    object.draw(gl); 
    gl.glPopMatrix(); 

問題是它沒有圍繞中心進行旋轉。它只將對象的座標轉換爲給定點,然後圍繞座標旋轉。這是爲什麼?

回答

0

這是因爲在OpenGL中,glRotate沒有指定方向,例如,在攪拌器中,但圍繞原點旋轉。你需要做的是:

translate(-pivot); // Make the pivot the origin 
rotate(); // rotate around origin 
translate(pivot); // translate back 
+0

謝謝你的作品! – user3337420

+0

@ user3337420不錯。 :)請將其標記爲已接受的答案,以便其他人知道問題已回答。 –