2011-01-13 2 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); 

тогда я получить очень тонкую линию (1px), а не antialised линии. Каков наилучший способ сделать это правильно?

ответ

2

Я думаю, что вы делаете правильно, но уверены ли вы, что ваше устройство поддерживает сглаживание? Посмотрите на это сообщение в блоге: http://olofsj.posterous.com/playing-with-android-and-opengl

+0

Мое устройство Samsung Galaxy S i9000 и HTC Legend. – lacas

+0

Да, я не думаю, что они поддерживают сглаживание по линиям. На самом деле, я думаю, OpenGL ES 1.0 поддерживает только сглаживание полигонов. –

+0

Он был уверен, что было какое-то время назад, но может ли кто-нибудь найти эту информацию в блоге? (ссылка не работает) – DNax