0
如果我有一個平面上的對象,它的翻譯值是glTranslatef(0,10,-5)所以我可以假設我的對象位置是(0,10,-5)?譯文是否給出了對象的位置?是glTranslation()函數在opengl中給出對象的位置?
如果我有一個平面上的對象,它的翻譯值是glTranslatef(0,10,-5)所以我可以假設我的對象位置是(0,10,-5)?譯文是否給出了對象的位置?是glTranslation()函數在opengl中給出對象的位置?
不,glTranslatef()設置一個矩陣,確保在將此語句翻譯爲給定量之後繪製的對象全部。如果您只想翻譯(定位)一個對象,請使用以下內容。
glLoadIdentity()
glPushMatrix();
glTranslatef(0,10,-5);
//DrawObjectOne
glPopMatrix();
//DrawObjectTwo
此代碼執行以下操作:
首先它加載同一性矩陣,這字面意思在位置,旋轉或比例沒有變化。然後將一個新矩陣推到矩陣堆棧上。對當前WorldMatrix的所有更改都會一直保持,直到glPopMatrix()被調用。
我們通過設置(0,10,-5)的平移來修改當前的世界矩陣,然後我們在該位置繪製該對象。
現在我們彈出當前世界矩陣,當前世界矩陣現在消失了,我們返回到前一個WorldMatrix(這是單位矩陣)
然後我們得出物體的兩個,這是剛剛被在(0繪製,0,0)。
謝謝,我明白了。那麼怎樣才能得到三維座標的當前位置? – 2011-04-02 06:53:54
WorldMatrix * trianglePosition會產生確切的3D位置,但您可能需要爲此實現自己的Matrix代數。順便說一句,請標記這個問題作爲答案,如果它幫助你;)。 – 2011-04-02 06:58:12