這已被問及很多很多次,並且我已經閱讀了大量關於它的帖子和論壇,但我無法得到一個對象圍繞它自己的軸旋轉。 我得出這樣幾個對象:在OpenGL中推動/流行矩陣和圍繞自己的軸旋轉個體對象
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
.....
gl.glPushMatrix();
gl.glRotatef(angle, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(0.0f, 0.0f, 0.0f);
texture.bind(gl);
gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, textureRLt);
gl.glNormalPointer(GL2.GL_FLOAT, 0, normalRLt);
gl.glVertexPointer(3, GL2.GL_FLOAT, 0, vertexRLt);
gl.glDrawElements(GL2.GL_TRIANGLES, countI, GL2.GL_UNSIGNED_SHORT, indexRLt);
gl.glPopMatrix();
,這是正確繪製,所有紋理和應用法線..
我知道OpenGL的反向執行命令,所以這就是爲什麼glRotatef是第一。另外我知道所有的旋轉都在原點附近,所以我需要將對象轉換爲原點(不是我認爲必須的,因爲「筆」已經在原點,因爲我在繪製每個對象之前保存矩陣並且之後彈出)。這是與glDrawElements的東西?有些東西看起來不正確。
任何幫助將不勝感激。 :)
編輯:我可以看到物體如何圍繞主x軸旋轉,但我希望它們圍繞其本地x軸旋轉。
這並不是OpenGL「反向執行命令」,而是轉換矩陣的組成方式。 – andrewmu 2012-02-22 17:01:34
你想要做的是將操作視爲在本地而不是全局應用。因此,在您的示例中,您圍繞本地Y軸旋轉,然後在該新座標系中進行平移。如果你想旋轉更多的地方,那麼他們需要以後做。但是,在您的示例中,您的翻譯爲零,因此它沒有任何作用,訂單也無關緊要。也許你只是誤解了對象的軸。 – 2012-02-22 17:25:44