2010-04-08 85 views
7

根据我对Ch。 6红皮书,改变了需要改变ES的事情,我想下面的代码应该做的是:我们如何在Android 1.5上的OpenGL ES中获得Polygon Antialiasing?

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?我们应该如何绘制填充的多边形W /抗锯齿,如果不与GL_POLYGON_SMOOTH?

回答

3

没有尝试它,你在做什么似乎不正确。但是,尽管API确实存在,但许多手机实际上并不支持反锯齿。

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

http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node63.htmlthis post关于对iPhone

+1

安德烈斯同样的问题肯定是要发生什么,答案是有帮助的。但它让我想知道:仿真器是否也无法支持抗锯齿?因为我也看到了模拟器上的失败。顺便说一句:我注意到第二个链接Andres引用的第一件事是,这个问题也没有在那里回答! – 2011-02-07 22:42:30