我想讓2個立方體以不同方式旋轉。LWJGL旋轉對象
設置旋轉,我這樣做。
GL11.glRotatef(rot[0], 1.0f, 0.0f, 0.0f);
GL11.glRotatef(rot[1], 0.0f, 1.0f, 0.0f);
GL11.glRotatef(rot[2], 0.0f, 0.0f, 1.0f);
而不是使用GL11.glLoadIdentity()重置旋轉立方體類中,我做這樣的事情。
GL11.glRotatef(rot[0] * -1.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef(rot[1] * -1.0f, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(rot[2] * -1.0f, 0.0f, 0.0f, 1.0f);
這應該重置每個軸的旋轉。
數組「rot」保存x,y和z旋轉,並且通過這三個方法在立方體類中進行更新。
public void pitch(float angle) {
rot[0] = angle;
}
public void yaw(float angle) {
rot[1] = angle;
}
public void roll (float angle) {
rot[2] = angle;
}
獨立,每個 「GL11.glRotatef(等,等,等,等)和GL11.glRotatef(等* -1.0F,等,等,等)」 工作正常,但是當他們都在一起,奇怪的旋轉發生。
我不確定這是否與Gimbal Lock或我的代碼有關,請幫忙。
在此先感謝。
我將如何避免使用固定功能管道? – irishpatrick 2014-10-18 23:01:01
瞭解基於着色器的方法,您直接管理矩陣而不是讓openGL做到這一點 – 2014-10-18 23:02:50