【问题标题】:How to get polygon antialiasing to work?如何让多边形抗锯齿工作?
【发布时间】:2010-01-08 14:58:03
【问题描述】:

我正在使用这些函数调用:

glEnable(GL_BLEND)
glEnable(GL_POLYGON_SMOOTH)
glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE) 

它不起作用,也不会渲染。

glEnable(GL_BLEND)
glEnable(GL_POLYGON_SMOOTH)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

它不抗锯齿。

【问题讨论】:

  • 您可能应该编辑问题的标题;听起来这并不是真正的抗锯齿,而是创建带圆角的多边形。

标签: opengl polygon alphablending antialiasing primitive


【解决方案1】:

试试glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST)

【讨论】:

  • 感谢您的回答。不幸的是我得到: OpenGL.error.GLError: GLError( err = 1280, description = 'invalid enumerant', baseOperation = glHint, cArguments = (GL_POLYGON_SMOOTH, GL_NICEST) ) 不知道这意味着什么,但它不喜欢它。我正在使用 OpenGL 和 python。
  • 糟糕,它应该是GL_POLYGON_SMOOTH_HINT,而不是GL_POLYGON_SMOOTH。我更新了我的答案。
  • 谢谢,但还是不行。我想在我的 2D 游戏中创建圆角,这就是我使用多边形的原因。让角落光滑会很好。线条平滑有效。不知道为什么不这样。
  • 圆角?这并不是多边形抗锯齿的真正设计目的,它应该修复锯齿状边缘。角落应该或多或少地尖锐,就像这里:databasesandlife.com/blog-attachments/20080320-polygon-1.png
【解决方案2】:

这是一个普通的答案.. 但如果您想要圆角,您可能希望在拐角处使用更多顶点并将它们放置成更圆的形状。您也可以考虑在程序上执行此操作.. 但是如果您正在做一个游戏并且想要完成它,我通常建议您在数据中拥有最终的顶点位置(除非您有令人信服的理由它是动态的)。

或者,您可以在角落附近使用具有圆形外观的纹理。随着视频硬件变得越来越强大,这逐渐变得不那么流行,但仍然非常有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    相关资源
    最近更新 更多