2011-09-11 84 views
3

可能重複:
How to get rid of Jagged edges in Android OpenGL ES?如何在Android OpenGL ES中執行多重採樣?

我想要做的抗鋸齒我appliction.But這是行不通的,無論我做什麼。 我的代碼是

public void onSurfaceCreated(GL10 gl, EGLConfig config){   
    g10 = gl; 
    gl.glClearColor(0f, 0, 0.0f, 1.0f); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, 
      GL10.GL_REPEAT); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, 
      GL10.GL_REPEAT); 

    gl.glSampleCoverage(1.f, true); 
    gl.glEnable(GL10.GL_DITHER); 
    gl.glEnable(GL10.GL_MULTISAMPLE); 
    gl.glEnable(GL10.GL_POINT_SMOOTH); 
    gl.glEnable(GL10.GL_LINE_SMOOTH); 
    gl.glEnable(GL10.GL_SAMPLE_COVERAGE); 
    gl.glPointSize(8); 
    gl.glLineWidth(5); 
    gl.glHint(GL10.GL_POINT_SMOOTH_HINT, GL10.GL_NICEST); // Make round points, not square points 
    gl.glHint(GL10.GL_LINE_SMOOTH_HINT, GL10.GL_NICEST); // Antialias the lines 
} 

public void draw(GL10 gl){ 
    gl.glClearColor(0f, 0, 0.0f, 1.0f); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE); 
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 

    gl.glEnable(GL10.GL_TEXTURE_2D); 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture[0]); 
    gl.glFrontFace(GL10.GL_CCW); 

    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, m_TexBuffer[i]); 
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, m_VertexBuffer[i]); 
    gl.glDrawElements(GL10.GL_TRIANGLE_FAN, vertexCount, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);  

} 

它沒有做任何work.Please告訴我爲什麼。謝謝。

+0

即使這被標記爲重複,請參閱下面的svdree的答案,該方法不包含在其他問題的答案中,並且不需要着色器代碼。並按照我的評論中的鏈接,爲某人的示例代碼(我沒有嘗試過自己)。 – ToolmakerSteve

+0

這是一個http://stackoverflow.com/questions/4934367/how-to-get-rid-of-jagged-edges-in-android-opengl-es/的副本從那裏:「http://代碼。 google.com/p/gdc2011-android-opengl/有多重採樣的示例代碼。「 – thakis

回答

9

如果您想要執行FSAA,則需要創建啓用多重採樣的EGL上下文。編寫一個EGLConfigChooser,返回一個多重採樣配置(爲EGL_SAMPLE_BUFFERS指定1),並將其傳遞給setEGLConfigChooser

+0

這看起來像編寫這樣一個選擇器的完整示例代碼:https://code.google.com/p/gdc2011-android-opengl/source/browse/trunk/src/com/example/gdc11/MultisampleConfigChooser.java?r = 2對我來說,這似乎比使用着色器的鏈接簡單得多(儘管你可以直接使用這些着色器,你不需要了解它們,所以也許這種方法使用起來也很簡單)。 – ToolmakerSteve

+0

這不是我鏈接到同一事物的鏈接嗎? – thakis