Как сделать мультисэмплинг в Android OpenGL ES?

Возможный дубликат:
Как избавиться от неровных краев в Android OpenGL ES?

Я хочу сделать сглаживание в своем приложении. Но оно не работает, независимо от того, что я сделал. Мой код

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

}

Это не сработало. Пожалуйста, скажите мне, почему. Спасибо.

1 ответ

Если вы хотите выполнить FSAA, вам нужно создать EGL-контекст с включенной мультисэмплингом. Напишите EGLConfigChooser, который возвращает конфигурацию мультисэмплинга (укажите 1 для EGL_SAMPLE_BUFFERS), и передайте ее в setEGLConfigChooser.

Другие вопросы по тегам