2012-08-04 92 views
1

我只是想完全清楚。我仍然對Open GL感興趣,主要是通過嘗試&錯誤來學習。OPENGL ES glRotatef

當我使用glRotatef(角度,X,Y,Z)

任何我從該點上繪製將指定的量轉動,在指定的軸?

那麼我將如何撤銷這種旋轉?

glRotatef(45, 0, 0, 1); 
    // draw object 
    glRotatef(0, 0, 0, 0); 

會這樣嗎?

要清楚我需要什麼,當用戶拖動通過它繪製成一定角度的直線與屏幕的手指,和我採取這一角度,並把它應用到帶紋理的正方形。

如何過我有很多目標之前我和這個廣場,我不想旋轉後得出。

到目前爲止,我認爲這是肯定地說,當你應用轉換/旋轉/平移/直到你指定紋理其他明智它會持續多久?

+0

glRotatef已被棄用。我不會推薦將它用於新代碼。 – luiscubal 2012-08-04 23:00:50

+0

@luiscubal真實的,但它聽起來像他使用的OpenGL ES 1.1在這種情況下,這將是相當的學習曲線改變 - 當然遠不止是不使用glRotatef ..蠕蟲它完全是另外一個可以 – 2012-08-04 23:13:17

回答

3

OpenGL的改造FAQ涵蓋了這一點:http://www.opengl.org/archives/resources/faq/technical/transformations.htm

你可以計算出逆變換每一個操作,我敢肯定在這種情況下,正確的方法是glRotatef(-45, 0, 0, 1)。當您開始添加比例並轉換爲混音時,這很快變得複雜。一個簡單得多的解決方案與glPushMatrixglPopMatrix

包變換例如:

// save the current matrix state 
glPushMatrix() 

// Transform 
glTranslate(...) 
glRotate(...) 

// Issue a draw call 
glDrawArrays(...) 

// Restore the transformation matrix to when it was saved. 
glPopMatrix() 

坡平,你可以去你的商務大樣的轉變從來沒有發生過矩陣之後。 這對分層轉換也非常有用,因爲您可以在對方內部有多個push-pop序列。

+0

哇,這麼簡單的解釋,以及我一直在尋找那樣的小時。 (很多人都懶得解釋例子中所有呼叫的含義) – WIllJBD 2012-08-04 22:57:44