gpt4 book ai didi

java - 我想在 LWJGL 中围绕它的中心旋转一个 Sprite

转载 作者:行者123 更新时间:2023-11-29 03:36:52 25 4
gpt4 key购买 nike

这里没有问题能够提供帮助。我想在 LWJGL 中围绕其中心旋转一个 Sprite ,一个带有纹理的四边形。

这是我的代码,目前,它围绕其他某个中心旋转。

public void draw(int x, int y, int rot) {

//存放当前模型矩阵 glPushMatrix();

    // bind to the appropriate texture for this sprite
texture.bind();

// translate to the right location and prepare to draw
glTranslatef(x, y, 0);
glRotatef(rot,0f,0f,1f);
// draw a quad textured to match the sprite
glBegin(GL_QUADS);
{
texture.bind(); // or GL11.glBind(texture.getTextureID());

glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(100,100);
glTexCoord2f(1,0);
glVertex2f(100+texture.getTextureWidth()*2,100);
glTexCoord2f(1,1);
glVertex2f(100+texture.getTextureWidth()*2,100+texture.getTextureHeight()*2);
glTexCoord2f(0,1);
glVertex2f(100,100+texture.getTextureHeight()*2);
glEnd();
}
glEnd();

// restore the model view matrix to prevent contamination
glPopMatrix();
}

最佳答案

围绕其中心(或任何偏移点,实际上)旋转 2d Sprite 意味着将要旋转的点平移到窗口的原点。如果它在 Sprite 的中间,这意味着将 Sprite 平移到点:
-sprite.width/2 , -sprite.height/2
想象此时四分之一在屏幕区域和四分之三在屏幕区域之外“绘制”的 Sprite 。现在是旋转它的时候了,它仍然会围绕原点旋转,但现在恰好也是 Sprite 的中间。最后,将 Sprite 转换回您希望它在屏幕上的位置。
附带一提,我不明白为什么人们评论他的方式已被弃用。这与问题完全无关,在某些情况下人们不想使用较新的功能。

关于java - 我想在 LWJGL 中围绕它的中心旋转一个 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com