Java 我想在LWJGL中围绕其中心旋转一个精灵
毫无疑问,这里没有人能帮上忙。我想旋转一个精灵,一个有纹理的四边形,在LWJGL中围绕它的中心旋转 这是我的代码,目前,它围绕其他中心旋转Java 我想在LWJGL中围绕其中心旋转一个精灵,java,opengl,geometry,lwjgl,Java,Opengl,Geometry,Lwjgl,毫无疑问,这里没有人能帮上忙。我想旋转一个精灵,一个有纹理的四边形,在LWJGL中围绕它的中心旋转 这是我的代码,目前,它围绕其他中心旋转 public void draw(int x, int y, int rot) { //存储当前模型矩阵 glPushMatrix() 围绕其中心旋转二维精灵(或任何偏移点,实际上)意味着将要旋转的点转换为窗口的原点。如果是精灵的中间部分,这意味着将精灵转换为点: -sprite.width/2,-sprite.height/2 设想精灵被“绘制”,此时四
public void draw(int x, int y, int rot) {
//存储当前模型矩阵
glPushMatrix()
围绕其中心旋转二维精灵(或任何偏移点,实际上)意味着将要旋转的点转换为窗口的原点。如果是精灵的中间部分,这意味着将精灵转换为点:
-sprite.width/2,-sprite.height/2
设想精灵被“绘制”,此时四分之一在屏幕区域,四分之三在屏幕区域之外。现在是旋转它的时候了,它仍然会围绕原点旋转,但这恰好也是精灵的中间部分。最后,将精灵翻译回您希望它出现在屏幕上的位置。
顺便说一句,我不明白人们为什么不赞成他的方式。这与问题完全无关,而且在某些情况下,人们不想使用较新的功能性工具。围绕其中心旋转2d精灵(或任何偏移点,实际上)意味着将要旋转的点转换为窗口的原点。如果是精灵的中间部分,这意味着将精灵转换为点:
-sprite.width/2,-sprite.height/2
设想精灵被“绘制”,此时四分之一在屏幕区域,四分之三在屏幕区域之外。现在是旋转它的时候了,它仍然会围绕原点旋转,但这恰好也是精灵的中间部分。最后,将精灵翻译回您希望它出现在屏幕上的位置。
顺便说一句,我不明白人们为什么不赞成他的方式。这与问题完全无关,有些情况下,人们不想使用较新的函数。您不应该使用这些函数中的任何一个。这里使用的每个OpenGL函数都不推荐使用。你需要创建一个顶点数组并在着色器中管理变换。等等,我不明白你的问题。我如何使用这些函数旋转它?我不在乎它们是否被弃用。你不应该使用这些函数中的任何一个。这里使用的每个OpenGL函数都不推荐使用。你需要创建一个顶点数组并在着色器中管理变换。等等,我不明白你的问题。我如何使用这些函数旋转它?我不在乎他们是否不赞成。
// 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();
}