基本上我想打开一扇门,我想到了使用glRotatef。 我的问题是它影响了它之后绘制的每个物体。 有谁知道如何阻止它?
Door.class
public static void draw(Texture door) {
door.bind();
if(Door_Test.state == "out" && d != 90){
glRotatef(i, 0, 1, 0);
i+=5;
}
glBegin(GL_QUADS);
glColor3f(1f, 1f, 1f);glTexCoord2f(0,0);glVertex3f(-2,3, -15);
glColor3f(1f, 1f, 1f);glTexCoord2f(0,1);glVertex3f(-2,-3, -15);
glColor3f(1f, 1f, 1f);glTexCoord2f(1,1);glVertex3f(2,-3, -15);
glColor3f(1f, 1f, 1f);glTexCoord2f(1,0);glVertex3f(2,3, -15);
glEnd();
}
答案 0 :(得分:4)
常用方法:
glPushMatrix();
glRotatef(/*...*/);
// Drawing commands here
glPopMatrix();
答案 1 :(得分:2)
旋转时,它会旋转整个场景。因此,要旋转单个对象,可以旋转整个场景,绘制对象,然后再旋转屏幕。
glRotatef(i, 0, 1, 0);
// Draw object.
glRotatef(-i, 0, 1, 0);
正如Reto Koradi指出的那样,如果你不断这样做,你可能会出现随时间累积的浮点舍入误差。 HolyBlackCat's answer提供了更好的解决方案。