【问题标题】:Smooth edges for a square in OpenGLOpenGL中正方形的平滑边缘
【发布时间】:2015-05-21 06:20:44
【问题描述】:

http://cs.lmu.edu/~ray/notes/openglexamples/ 在这个 Spinning Square 示例中,您可以注意到图像中正方形的边缘不是平滑的。我该如何解决这个问题?

【问题讨论】:

  • 市面上有大量的抗锯齿技术:FXAA、MLAA、MLAA、GPAA 等。在像这样的简单测试中,最简单的解决方案可能只是创建一个多采样帧缓冲区。跨度>

标签: opengl


【解决方案1】:

您看到的效果称为锯齿,可以使用抗锯齿技术解决。

可能有多种抗锯齿技术,但目前最常见的是 MSAA(多重采样抗锯齿)https://www.opengl.org/wiki/Multisampling。 从开发人员的角度来看,MSAA 既快速又简单,因为现代驱动程序提供了支持,并且只需要在应用程序启动时启用。然而,它确实以运行时性能为代价。

【讨论】:

    【解决方案2】:

    您可以在绘图前使用这些功能:

    glEnable( GL_LINE_SMOOTH );
    glEnable( GL_POLYGON_SMOOTH );
    glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
    glHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST );
    

    或者你可以在绘图之前使用它:

     Gl.glShadeModel(Gl.GL_SMOOTH);
     Gl.glEnable(Gl.GL_LINE_SMOOTH);
     Gl.glEnable(Gl.GL_BLEND);
     Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
     Gl.glHint(Gl.GL_LINE_SMOOTH_HINT, Gl.GL_DONT_CARE);
    

    看看哪个更适合你。

    之前有人问过关于画线的类似问题:

    How to draw smooth line with antialias

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多