Java Android OpenGL ES 1-多边形边
我正在使用opengl es 1.0绘制一个箭头。我用一个长方形作为轴,用一个金字塔作为尖端来画箭头。当箭头从特定角度旋转时,可以通过箭头尖端的边缘看到轴 正在发生的事情的图像: 我的画法Java Android OpenGL ES 1-多边形边,java,android,opengl-es,polygon,edges,Java,Android,Opengl Es,Polygon,Edges,我正在使用opengl es 1.0绘制一个箭头。我用一个长方形作为轴,用一个金字塔作为尖端来画箭头。当箭头从特定角度旋转时,可以通过箭头尖端的边缘看到轴 正在发生的事情的图像: 我的画法 public void draw(GL10 gl) { gl.glFrontFace(GL10.GL_CW); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_COLOR_
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);
}
我认为这可能与剔除有关,但为什么它只发生在尖端的边缘?必须启用深度测试才能使其看起来正确。使用以下命令:
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthMask(GL10.GL_TRUE);
然后不要忘记在绘制帧之前清除位:
gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT);