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 回答