抗锯齿填充了libgdx中的形状

时间:2013-08-12 11:57:15

标签: java opengl libgdx

我一直在寻找一种方法来消除用ShapeRenderer(即ShapeType.Filled)绘制的填充形状的边缘,但找不到任何关于此的内容。

线与Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH)很适合但我尝试过的任何东西都不适用于填充形状。那么,有没有人有任何建议?

3 个答案:

答案 0 :(得分:7)

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

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

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

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