8

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

线条效果很好,Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH)但我没有尝试过填充形状。那么,有人有什么建议吗?

4

3 回答 3

7

也许这个链接会有所帮助:Android上的LIBGDX中的多采样抗锯齿

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

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

于 2013-08-12T12:05:41.227 回答
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);
于 2013-11-21T17:57:43.510 回答
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。

于 2013-08-12T15:59:45.493 回答