我一直在寻找一种方法来消除用ShapeRenderer
(即ShapeType.Filled
)绘制的填充形状的边缘,但找不到任何关于此的内容。
线与Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH)
很适合但我尝试过的任何东西都不适用于填充形状。那么,有没有人有任何建议?
答案 0 :(得分:7)
也许这个链接会有所帮助:MULTI SAMPLING ANTI-ALASING IN LIBGDX ON ANDROID
通常,您必须启用多重采样才能使填充形状的边缘平滑。
答案 1 :(得分:3)
我发现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。
答案 2 :(得分: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);