LibGDX抗锯齿

21

有没有一种方法在LibGDX中实现抗锯齿?

我的线条非常像素化。

截图


5
你尝试过这个链接吗?http://www.badlogicgames.com/wordpress/?p=2071 - MDaniyal
哇,这个链接非常有用。 - ComanderKai77
这个链接已经失效了 :-( - Sebastian
1
@Sebastian 你可以使用互联网档案馆:https://web.archive.org/web/20200427101053/https://www.badlogicgames.com/wordpress/?p=2071 - ComanderKai77
3个回答

32

为了平滑任何线条或形状,使用多重采样抗锯齿。

将:
Gdx.gl.glclear()

替换成:
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT | (Gdx.graphics.getBufferFormat().coverageSampling?GL20.GL_COVERAGE_BUFFER_BIT_NV:0))

对于Android,在打开AndroidLauncher.java文件并添加:config.numSamples = 22 是一个不错的数值。

对于桌面设备,config.samples=3 这样就能完成工作...


@SamanMiran 不是的,可以看下面Manuel被downvote的回答,那里有更好的纹理插值方法。这个只是修复纹理边缘(我建议你尽可能将其保持透明)。 - Riki137
1
如果您正在使用Lwjgl3ApplicationConfiguration,则无法访问samples字段。相反,请执行“config.setBackBufferConfig(8,8,8,8,16,0,num_of_samples);”。这些值是默认值-仅设置最后一个参数,即样本值。 - Gad Wissberg

3
您可以将过滤器放在纹理本身中。
bg = new TextureRegion(new Texture(
            Gdx.files.internal("data/bg.png")));
//bg.getTexture().setFilter(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR);
bg.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear); 

11
那不是抗锯齿,而且他甚至没有使用纹理。 - Winter

2

在你的Lwjgl3ApplicationConfiguration中设置样本数。默认值为0,尝试使用更高的值:

final Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
int samples = 2; // you can also play around with hiher values like 4
config.setBackBufferConfig(8, 8, 8, 8, 16, 0, samples); // 8, 8, 8, 8, 16, 0 are default values

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