0

コード付きの三角形が2つあります。

static float squareCoords[] = {  
    // red triangle
    0.0f, 0.0f, 0.5f,
    0.25f, 0.5f, 0.5f,
    0.5f, 0.0f, 0.5f,

    //black triangle
    -0.1f, -0.1f, 0.1f,
    0.15f, 0.4f, 0.1f,
    0.4f, -0.1f, 0.1f,
};

描画順:

private short drawOrder[] = { 
            0, 2, 1,
            3, 5, 4,
    };

次に、glDrawElements で描画すると、黒い三角形が常に赤の前に表示されます。Z 座標を変更しても結果はありません。黒いトリングル秒を描画しているように見えるので、常に前に表示されます。何が起こっているのか、どこに問題があるのか​​を理解するのを手伝ってください。

4

1 に答える 1

2

おそらく、あなたは深さのテストを有効にしていませんglEnable(GL_DEPTH_TEST)か?

または、正規化されたデバイス座標への変換中に Z 座標が「押しつぶされる」ように投影行列を設定することもできます。ニア プレーンとファー プレーンが何であるかを確認し、ファー プレーンを引き込むか、ニア プレーンを引き出す可能性があります。

于 2013-05-05T18:45:51.483 に答える