1

ここでの質問は役に立ちませんでした。LWJGLの中心を中心に、テクスチャのあるクワッドであるスプライトを回転させたい。

これが私のコードです。現在、他の中心を中心に回転しています。

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

1 に答える 1

4

2D スプライトをその中心 (または実際には任意のオフセット ポイント) を中心に回転させるということは、回転させたいポイントをウィンドウの原点に変換することを意味します。スプライトがスプライトの中央にある場合、これはスプライトを点に変換することを意味します: -sprite.width
/2 , -sprite.height/2
この時点での画面領域。回転する時が来ました。原点を中心に回転しますが、それはたまたまスプライトの真ん中でもあります。最後に、スプライトを画面上の希望する場所に戻します。
余談ですが、彼のやり方が非推奨であると人々がコメントする理由がわかりません。それは質問とはまったく関係がなく、新しい機能を使用したくない場合があります。

于 2013-02-23T12:27:57.613 に答える