纹理不旋转LWJGL

时间:2014-05-14 07:29:07

标签: java opengl lwjgl slick2d

我正在使用LWJGL和Slick-Util库来尝试旋转纹理。 这是我用来尝试旋转纹理的代码。

GL11.glBegin(GL11.GL_QUADS);

GL11.glPushMatrix();
GL11.glTranslatef(x, y, 0);
GL11.glRotatef(r, 1, 1, 0);

GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(x, y);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(x + texture.getTextureWidth(), y);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(x + texture.getTextureWidth(), y + texture.getTextureHeight());
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(x, y + texture.getTextureHeight());

GL11.glPopMatrix();

GL11.glEnd();

它在给定的x和y位置处完美地绘制纹理,但是当我传入一个度数时,它不会旋转并且只是绘制,就像旋转为零一样。

有谁知道我做错了什么?提前谢谢。

编辑:

当我以180的'r'或任何其他程度运行此代码时。这就是我的屏幕的样子。 红色圆圈图像看起来与常规未旋转图像完全相同。

enter image description here

1 个答案:

答案 0 :(得分:0)

我知道回答你自己的问题有点自负,但经过大量研究后我终于找到了答案。这是一种工作方法,它将根据' r'旋转光滑的工具纹理。以度数给出。

public static void drawTexture(Texture texture, int x, int y, int r)
{
        int width = texture.getTextureWidth();
        int height = texture.getTextureHeight();

        GL11.glTranslatef(x + width / 2, y + height / 2, 0);
        GL11.glRotatef(r, 0, 0, 1);

        GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());
        GL11.glBegin(GL11.GL_QUADS);

        GL11.glTexCoord2f(0, 0);
        GL11.glVertex3f(-width / 2, -height / 2, 0);

        GL11.glTexCoord2f(1, 0);
        GL11.glVertex3f(width / 2, -height / 2, 0);

        GL11.glTexCoord2f(1, 1);
        GL11.glVertex3f(width / 2, height / 2, 0);

        GL11.glTexCoord2f(0, 1);
        GL11.glVertex3f(-width / 2, height / 2, 0);

        GL11.glEnd();
        GL11.glLoadIdentity();
}