Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在LWJGL中围绕其中心旋转一个精灵_Java_Opengl_Geometry_Lwjgl - Fatal编程技术网

Java 我想在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 设想精灵被“绘制”,此时四

毫无疑问,这里没有人能帮上忙。我想旋转一个精灵,一个有纹理的四边形,在LWJGL中围绕它的中心旋转

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

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