如何使用glRotatef()

时间:2013-12-21 22:42:31

标签: java lwjgl

我是LWJGL的新手,但我正在慢慢学习。当你按下键时,我想制作一个旋转的方块。就像你在下面说的那样将d旋转90度,但是当我使用glRotatef()时;它给了我一个错误,我不知道为什么。有错误告诉我我需要为它创建一个方法,我知道我不需要。一切都有帮助!

public class MainPlayer {

private Draw draw;
private int rotation;

private float WIDTH = (float) (Display.getWidth() * 0.1);
private float HEIGHT = (float) (WIDTH / 2);
private float x = Display.getWidth() / 2 - WIDTH / 2;
private float y = Display.getHeight() / 2 - HEIGHT / 2;

public MainPlayer(){
    draw = new Draw(1.0f, 1.0f, 1.0f, WIDTH, HEIGHT);
}

public void update(){

}

public void render(){

        glTranslatef(x, y, 0);
        glRotatef(rotation,0,0,1);
        draw.render();

}

public void getInput(){
    if(Keyboard.isKeyDown(Keyboard.KEY_W)){
        rotation = 0;
    }
    if(Keyboard.isKeyDown(Keyboard.KEY_S)){
        rotation = 180;
    }
    if(Keyboard.isKeyDown(Keyboard.KEY_A)){
        rotation = 270;
    }
    if(Keyboard.isKeyDown(Keyboard.KEY_D)){
        rotation = 90;
    }
}
}

3 个答案:

答案 0 :(得分:0)

您创建了int rotation并假设您的render()一直循环,并且您只在<{1}}中设置 rotation

所以我假设您应该将其声明为getInput()

答案 1 :(得分:0)

这可能意味着您没有静态导入glRotatef

使用

GL11.glRotatef(rotation, 0, 0, 1);

或使用

在程序开头导入它
import static org.lwjgl.opengl.GL11.glRotatef

答案 2 :(得分:0)

glRotatef()是一个旋转对象的OpenGL调用,就像glTranslatef()移动它们一样。 glRotatef()以同样的方式完成它。

glRotatef(AngleOfRotationf,0,1,0)会以水平方式旋转它,就像我刚制作的视频一样:http://www.youtube.com/watch?v=SHsssrj9qr8&使用该线来旋转船只。

同样在那段视频中,我演示了用glTranslatef()移动它。

要使用它,您必须使用GL11.glRotatef(),或导入静态org.lwjgl.opengl.GL11。*;