我有以下代码:

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    gl.glShadeModel(GL10.GL_SMOOTH);
    gl.glClearDepthf(1.0f);
    gl.glEnable(GL10.GL_DEPTH_TEST);
    gl.glDepthFunc(GL10.GL_LEQUAL);
    //gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
    gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST);
}

public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();

但是,在Android Emulator中,边缘仍然严重地参差不齐。解决办法是什么?

最佳答案

最好的方法是使用多重采样(抗锯齿)。由于您使用仿真器,因此这不是您的选择。 (OpenGL ES 2.0支持多映射,但仿真器不支持2.0)
根据OpenGL规范,设备可以忽略您设置的glHint,因此不要期望太多。
GL_DITHER是一种从16位色深“伪造” 24位色深的方法,基本上与边缘无关。

虽然有一种“伪造”抗锯齿的旧方法,但我从未使用过,因此我无法告诉您如何使用,但您可以在网络上找到一些提示。

OpenGL docs

10-08 19:12