我想让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