How to do multisampling in Android OpenGL ES?

Possible duplicate:
How to get rid of Jagged edges in Android OpenGL ES?

I want to use Antialiasing in my applications. But this does not work no matter what I did. My code

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); } 

This did not work. Please tell me why. Thanks.

+3
source share
1 answer

If you want to do FSAA, you need to create an EGL context with multisampling enabled. Write an EGLConfigChooser that returns the multisampling configuration (specify 1 for EGL_SAMPLE_BUFFERS ) and pass it to setEGLConfigChooser .

+9
source

Source: https://habr.com/ru/post/1338868/


All Articles