根据我阅读《红皮书》第6章有关ES的内容,我认为下面的代码应该已经做到了必要的更改:
gl.glEnable(GL10.GL_POLYGON_SMOOTH);
gl.glBlendFunc(GL10.GL_SRC_ALPHA_SATURATE, GL10.GL_ONE);
gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST); // no visible diff
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
gl.glColor4f(1, 1, 1, 1);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); // first and count
但是上述方法失败了。输出结果没有明显的差异,锯齿状伪影仍然很明显,就像在插入glEnable...glHint之前一样痛苦。
实际上,我刚才所描述的是当我将GL_LINE_SMOOTH替换为GL_POLYGON_SMOOTH时发生的情况。后者甚至都找不到! 如果不在GL10中,那它在哪里?或者说它被OpenGL ES遗漏了吗?如果不能使用GL_POLYGON_SMOOTH来绘制带有抗锯齿效果的填充多边形,我们应该怎么办呢?