我正在使用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'或任何其他程度运行此代码时。这就是我的屏幕的样子。 红色圆圈图像看起来与常规未旋转图像完全相同。
答案 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();
}