0

私はopengl es 1.0を使用して矢印を描いています。四角形を軸に、角錐を先端にして矢印を描きました。矢が特定の角度から回転していると、矢の先端の端からシャフトが見えます。

何が起こっているかの画像: http://i.imgur.com/9K41OE8.png

私の抽選方法

    public void draw(GL10 gl) {
    gl.glFrontFace(GL10.GL_CW);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glEnable(GL10.GL_CULL_FACE);
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer);

    gl.glDrawElements(GL10.GL_TRIANGLES, indexBuffer.capacity(), GL10.GL_UNSIGNED_BYTE, indexBuffer);

    gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);  

}

カリングと関係があるのではないかと思うのですが、なぜ先端だけに発生するのでしょうか?

4

1 に答える 1

1

これを正しく表示するには、深度テストを有効にする必要があります。これを使って:

gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthMask(GL10.GL_TRUE);

そして、フレームを描画する前にビットをクリアすることを忘れないでください:

gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT);
于 2013-06-15T22:29:37.917 に答える