我有以下代码:
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();
Run Code Online (Sandbox Code Playgroud)
但在Android模拟器中,边缘仍然是严重的锯齿状.解决办法是什么?
小智 4
最好的方法是使用多重采样(抗锯齿)。由于您使用模拟器,这不适合您。(OpenGL ES 2.0支持多重映射,但模拟器不支持2.0)根据OpenGL规范,设备可以忽略您设置的glHint,因此不要对它抱有太大期望。GL_DITHER 是一种从 16 位颜色深度“伪造”24 位颜色深度的方法,基本上与边缘无关。
尽管有一种“假”抗锯齿的旧方法,但我从未使用过它,所以我无法告诉您如何操作,但您可以在网上找到一些提示。
混合函数(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA)对于以任意顺序渲染抗锯齿点和线也很有用。
使用混合函数(GL_SRC_ALPHA_SATURATE、GL_ONE)对多边形抗锯齿进行优化,多边形按从最近到最远的顺序排序。
| 归档时间: |
|
| 查看次数: |
13874 次 |
| 最近记录: |