【问题标题】:Anti-aliasing filled shapes in libgdxlibgdx 中的抗锯齿填充形状
【发布时间】:2013-08-12 11:57:15
【问题描述】:

我一直在寻找一种方法来消除使用ShapeRenderer(即ShapeType.Filled)绘制的填充形状的边缘的抗锯齿,但找不到任何相关信息。

Lines 与Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH) 配合得很好,但我尝试过的任何方法都不适用于填充形状。那么,有人有什么建议吗?

【问题讨论】:

    标签: java opengl libgdx


    【解决方案1】:

    也许这个链接会有所帮助:MULTI SAMPLING ANTI-ALASING IN LIBGDX ON ANDROID

    通常,您必须启用多重采样才能使填充形状的边缘平滑。

    http://www.opengl.org/wiki/Multisampling

    【讨论】:

    • 如果您使用的是 libGDX,这比您需要的级别要低得多。他们已经竭尽全力抽象出所有这些东西。为什么要在这里重新发明轮子?
    【解决方案2】:

    我发现 OpenGL 中缺乏抗锯齿支持(因为实际支持取决于可选的硬件支持),尤其是对于基本的多边形图元。我发现有两种可行的解决方案:

    首先,您可以在使用纹理时获得合理的多重采样。因此,也许将您的多边形渲染到 FrameBuffer 对象,然后将其复制到屏幕上。还有很多注意事项,请参阅http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/ 了解更多详情。

    其次,使用抗锯齿着色器渲染填充的形状,如以下问题:Drawing Antialiased circle using Shaders。如果你填充的原始形状很复杂,这可能是相当多的工作。有关如何将着色器与 Libgdx 一起使用,请参阅 https://code.google.com/p/libgdx/wiki/OpenGLShader。此选项也仅适用于 OpenGL ES 2.0。

    【讨论】:

      【解决方案3】:

      您是否尝试过以下提示?

      Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH);
      Gdx.gl.glEnable(GL10.GL_POINT_SMOOTH);
      Gdx.gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST);
      Gdx.gl.glHint(GL10.GL_POINT_SMOOTH_HINT, GL10.GL_NICEST);
      

      【讨论】:

      猜你喜欢
      • 2016-06-28
      • 2014-07-14
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多