我一直在到处寻找一种方法来消除用ShapeRenderer
(ie. ShapeType.Filled
) 绘制的填充形状的边缘,但找不到任何关于此的内容。
线条效果很好,Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH)
但我没有尝试过填充形状。那么,有人有什么建议吗?
也许这个链接会有所帮助:Android上的LIBGDX中的多采样抗锯齿
通常,您必须启用多重采样才能使填充形状的边缘平滑。
您是否尝试过以下提示?
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);
我发现 OpenGL 中缺乏抗锯齿支持(因为实际支持取决于可选的硬件支持),尤其是对于基本的多边形图元。我发现有两种解决方案有效:
首先,在使用纹理时可以获得合理的多重采样。因此,也许将您的多边形渲染到 FrameBuffer 对象,然后将其复制到屏幕上。仍然有很多警告,请参阅http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/了解更多详细信息。
其次,使用抗锯齿着色器渲染填充的形状,如以下问题所示:使用着色器绘制抗锯齿圆。如果您填充的原始形状很复杂,这可能是相当多的工作。请参阅https://code.google.com/p/libgdx/wiki/OpenGLShader了解如何将着色器与 Libgdx 一起使用。此选项也仅适用于 OpenGL ES 2.0。