libgdx纹理过滤器和纹理贴图(libgdx texture filters and mipmap

2019-07-21 11:26发布

当我尝试使用纹理贴图滤波LibGDX,没有任何图像出现。

我是新来LibGDX,和我有三个旋转,缩放界一个简单的2D场景。 为了抗混叠他们,我想用线性过滤。 对于建议,我看了这篇文章 ,里面说的是,对于严重缩放图像,纹理贴图可以用来提高速度或质量。

第一个意外出现了,尽管事实上,所有我的图片被缩小,我只看到一个线性滤波器如果magFilter是线性的。 换一种说法:

该代码将显示图像精缩线性滤波器:

parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);

whlie这个代码将不会:

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest);

这似乎相对的libGDX功能:

void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter)

这不会困扰我,但它表明,无论是libgdx是错误的(不太可能),文章是错误的(不太可能),或者我不明白的纹理过滤器。 当我尝试纹理贴图滤镜后者似乎特别容易。

此代码会导致没有显示

parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear);

这个代码显示,但随着最近的滤波

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear);

我错在那里做任何解释,将不胜感激。 我已搜查其他地方,但在libGDX纹理过滤器是非常具体的,所以除了在文章中,我还没有发现太多的帮助。

Answer 1:

我有同样的问题,并修复竟然是出奇的简单。 当你创建一个Texture ,你需要指定它使用的贴图。

所有您需要做的是通过第二个参数的Texture构造是这样的:

Texture myTexture = new Texture(Gdx.files.internal("myImage.png"), true);

您可以查看所有的Texture在API文档类的构造函数在这里: http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Texture.html



Answer 2:

就像Mitesh他说答案的贴图过滤器,因为你没有告诉Libgdx产生的贴图不起作用。

如果您使用的资产管理者代码将是这样的

 TextureParameter param = new TextureParameter();
 param.genMipMaps = true; // enabling mipmaps

 manager.load("path/to/texfile.png", Texture.class, param);

 Texture tex = manager.get("path/to/texfile.png", Texture.class);
 tex.setFilter(TextureFilter.MipMap, TextureFilter.Nearest);


Answer 3:

可以有你的图像的多个问题:

  1. 它应该是2的幂,如果你使用的是带有像354X420大小的图像,它不会工作。 在这种情况下,你需要采取的512×512的图片或2任何其他权力。

  2. 如果要启用MIPMAP过滤,则需要使用布尔genMipMaps告诉libgdx是否产生mapmaps启用它。



Answer 4:

尝试使用相同的minFilter和为MAXFilter。 我有一个类似的问题,如果我把TextureFilter.Linear,TextureFilter.Linear或两者MIPMAP问题就解决了。 希望这可以帮助。



文章来源: libgdx texture filters and mipmap