2011-01-13 139 views
0
 public void draw(GL10 gl) { 

     gl.glFrontFace(GL10.GL_CCW); 
     gl.glEnable(GL10.GL_CULL_FACE); 
     gl.glCullFace(GL10.GL_BACK); 

     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 

     /* 
     gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
     gl.glEnable(GL10.GL_BLEND); 
     gl.glEnable(GL10.GL_LINE_SMOOTH); 
*/ 

     gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); 

     gl.glLineWidth(3.0f); 
     gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); 

     gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, list.size()/3); 


     gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
     gl.glDisable(GL10.GL_CULL_FACE); 

     //gl.glDisable(GL10.GL_BLEND); 
     //gl.glDisable(GL10.GL_LINE_SMOOTH); 

    } 

我的代碼如下。Android OpenGL ES Line antialiase

如果我添加此代碼

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
gl.glEnable(GL10.GL_BLEND); 
gl.glEnable(GL10.GL_LINE_SMOOTH); 

然後我得到非常薄的(1像素)線,而不是一個antialised線。什麼是最好的方式來正確地做到這一點?

回答