2013-03-28 150 views
0

我正在繪製使用opengl es 1.0的箭頭。我畫了一個矩形作爲軸和金字塔作爲尖端的箭頭。當箭頭從某個角度旋轉時,可以通過箭頭的邊緣看到軸。Android OpenGL ES 1 - 多邊形邊緣

什麼正在發生的形象: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); 

} 

我認爲它可能是與撲殺,但它爲什麼會只發生在尖端的邊緣?

回答

1

必須啓用深度測試才能看起來正確。使用此:

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

然後不要忘了畫幀之前清除位:

gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT);