0

透明なテクスチャの平面(たとえば、家の窓)を描画すると、本来あるべきではない線や三角形が表示されます。どうすればこれを修正できますか?

三角形
(ソース:troll.ws

これが私が1つのウィンドウを描くために使用する方法です。ウィンドウを透明にするために、一時的にブレンドを有効にします。

 static void drawWindow(int startX, int startY, int endX, int endY) {

    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    Textures.window.bind();
    glPushMatrix();
    glTranslatef(startX, startY, 0);

    glBegin(GL_QUADS);
    glTexCoord2d(1, 1);
    glVertex3d(0, 0, 0);
    glTexCoord2d(0, 1);
    glVertex3d(endX - startX, endY - startY, 0);
    glTexCoord2d(0, 0);
    glVertex3d(endX - startX, endY - startY, 200);
    glTexCoord2d(1, 0);
    glVertex3d(0, 0, 200);
    glEnd();
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    glPopMatrix();
}
4

1 に答える 1

2

これは、ポリゴン スムージングがオンになっているために発生します。これにより、GL がポリゴンのエッジを異なる方法でレンダリングし、アルファ ブレンディングで問題が発生します。

これは時代遅れの形式の AA であるため、これをオフにして、代わりに MSAA やその他の同様の手法など、フル シーンのアンチエイリアシング手法を使用することをお勧めします。

また、標準的なアドバイスも適用されます。固定関数パイプラインは時代遅れで非推奨であり、一般的には推奨されません。

于 2013-01-13T00:12:02.530 に答える