0

これがなぜなのかわかりません:

glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glTranslated(posX, posY, 0);
glBegin(GL_QUADS);
    {
        glTexCoord2d(posXLeft, posYTop);
        glVertex2d(0, 0);
        glTexCoord2d(posXLeft, posYBottom);
        glVertex2d(0, verH);
        glTexCoord2d(posXRight, posYBottom);
        glVertex2d(verW, verH);
        glTexCoord2d(posXRight, posYTop);
        glVertex2d(verW, 0);
    }
    glEnd();
glPopMatrix();

ここで、posX と posY は明らかにピクセル単位の位置であり、posXLeft などは表示するテクスチャの比率です。

でもこれは:

glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glTranslated(posX, posY, 0);
    glBegin(GL_LINES);
    {
    glVertex2d(10, 10);
    glVertex2d(800, 600);
}
glEnd();
glPopMatrix();

そうではありません。また、テクスチャの一部ではなく、線を描く方がさらに簡単になるはずです。

到達したいのは、テクスチャにジグザグの線を追加して、損傷または破損した亀裂をシミュレートすることですが、1 本の線を描くことさえできないため、ここで立ち往生しています。

何かアドバイス?

4

2 に答える 2

2

線画コードで引き続きテクスチャリングが有効になっています。ただし、テクスチャ座標を指定しないため、現在設定されているテクスチャ座標のテクスチャで定義されている単色で線を描画します。

私の提案: その線を描くためのテクスチャリングを無効にします。

于 2013-11-15T11:55:33.610 に答える
0

datenwolf が言ったように、テクスチャリングを無効にする必要があります。プロパティが正しく設定されていないと、次の描画サイクルで問題が発生しますが、再度有効にする必要があります。

解決策は次のとおりです。

glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glDisable(GL_TEXTURE_2D);
glTranslated(posX, posY, 0);
    glBegin(GL_LINES);
    {
    glVertex2d(10, 10);
    glVertex2d(800, 600);
}
glEnd();
glEnable(GL_TEXTURE_2D);
glPopMatrix();

それはあなたの問題を解決するはずです。

于 2013-11-15T16:16:44.167 に答える