我有以下代码:
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