2012-07-01 166 views
2

使用绘图GL_TRIANGLE_FANs时使用此代码我没有得到任何抗锯齿:抗锯齿与GL_TRIANGLE_FAN

glDisable(GL_DEPTH_TEST); 

    // Blended points, lines, and polygons. 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); 
    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); 

    glEnable(GL_POINT_SMOOTH); 
    glEnable(GL_LINE_SMOOTH); 
    glEnable(GL_POLYGON_SMOOTH); 

我在做什么错?

回答

4

边缘抗锯齿总是一个提示,实现(你不指定哪个)可以根据规范自由地忽略它。由于各种原因(例如,无法处理相交的多边形,与帧缓冲混合的不良交互),这种抗混叠效果已经不再受欢迎,并且已被在帧缓冲级别工作的基于多采样的算法所取代。有一个ARB multisample扩展来控制这个(我相信它实际上是最近版本规范中的默认设置)。或者通常驱动程序有办法在全球范围内启用它,而无需修改源代码。

+0

感谢您的快速回答。什么是最简单的方法来获得我想要的混合?多抽样通常会在现代(<3年)的硬件上实现吗? –

+0

这完全取决于你的平台。例如,如果您在Linux上使用nvidia驱动程序,只需将__GL_FSAA_MODE环境变量设置为“4”,就可以获得相当有用的结果,而无需担心。 ARB_multisample扩展在API上有文档,现在在大多数/所有硬件上都支持。 –