【问题标题】:Texture not rotating LWJGL纹理不旋转 LWJGL
【发布时间】:2014-07-02 03:03:33
【问题描述】:

我正在使用 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”运行此代码时。这就是我的屏幕的样子。 红色圆圈图像看起来与常规未旋转图像完全一样。

【问题讨论】:

  • 如果先旋转再平移呢?
  • 它仍然不起作用:/还有其他想法吗?
  • 您的代码在我看来是正确的。你能上传你的输出图片吗?
  • 检查我在问题中所做的编辑,我已经上传了我的代码运行的图像。
  • 如果您仅沿任何其他单轴的 z 轴旋转会发生什么?你用的是 ortho2D 吗?

标签: java opengl lwjgl slick2d


【解决方案1】:

我知道回答自己的问题有点自负,但经过大量研究,我终于找到了答案。这是一种工作方法,它将根据以度为单位的 'r' 旋转 slick-util 纹理。

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();
}

【讨论】:

  • 如果您自己解决问题,回答您自己的问题是没有问题的,尽管对为什么这是一个解决方案有更多解释会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多