在libgdx中实现填充形状的抗锯齿效果

8
我一直在寻找一种方法来抗锯齿使用 ShapeRenderer 绘制的填充形状(即 ShapeType.Filled ),但是找不到任何关于这方面的内容。
使用 Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH) 可以使线条光滑,但是我尝试的所有方法都无法用于填充形状。那么,有人有什么建议吗?
3个回答

7

4
如果你在使用libGDX,这个操作其实已经比你需要的更低级了。他们刻意将所有这些细节进行了抽象处理,为什么要在这里重新造轮子呢? - Scuba Steve

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);

1
很遗憾,您提到的常量似乎不在最新版本的libGDX中。https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/GL20.java - Travis
是的,它们只在使用OpenGL ES 1.0时可用,而不是2.0。 - Wizche

3
我发现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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接