如何在Android 1.5上使用OpenGL ES实现多边形抗锯齿?

7

根据我阅读《红皮书》第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来绘制带有抗锯齿效果的填充多边形,我们应该怎么办呢?

1个回答

3

在没有尝试之前,您上面所做的似乎并不错误。然而,许多手机实际上不支持抗锯齿,尽管API支持。

通过在抖动透视矩阵的同时多次绘制屏幕,您应该能够实现全屏抗锯齿。

请参见此处此帖,涉及iPhone上相同的问题。


1
Andres 肯定有所发现,答案很有帮助。但是我想知道:模拟器是否也不支持抗锯齿?因为我在模拟器上也看到了失败的情况。顺便说一句:我注意到 Andres 引用的第二个链接上的问题也没有得到回答! - Matt J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接