libgdx纹理过滤器和mipmap

Ken*_*ron 8 java textures mipmaps libgdx

当我尝试在LibGDX中使用mipmap过滤时,不会出现任何图像.

我是LibGDX的新手,我有一个简单的2D场景,有三个旋转的缩放圆圈.为了对它们进行反混淆,我想使用线性过滤.对于建议,我查看了这篇文章,该文章说,对于大规模缩放的图像,可以使用mipmap来提高速度或质量.

第一个意想不到的表现是,尽管我的所有图像都按比例缩小,但我只会看到一个线性过滤器,如果magFilter是线性的.换一种说法:

此代码将显示缩小图像的线性过滤器:

parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)

这个代码不会:

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest);
Run Code Online (Sandbox Code Playgroud)

这似乎与libGDX函数相反:

void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter)
Run Code Online (Sandbox Code Playgroud)

这不会打扰我,除了它表明libgdx是错误的(不太可能),文章是错误的(不太可能),或者我不理解纹理过滤器.当我尝试使用mipmap过滤器时,后者似乎特别有可能.

此代码不会显示任何内容

parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)

此代码显示,但具有最近的过滤

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear);
Run Code Online (Sandbox Code Playgroud)

任何解释我错的地方都将不胜感激.我在其他地方搜索过,但是libGDX中的纹理过滤器非常具体,所以除了文章之外,我还没有找到太多帮助.

twi*_*wiz 10

我遇到了同样的问题,修复结果非常简单.创建时Texture,需要指定它使用mipmap.

您所要做的就是将第二个参数传递给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

  • 对于那些使用AssetManager的用户,可以通过将TextureParameter.genMipMaps设置为true并在加载纹理时将该纹理参数传递给AssetManager来实现:https://libgdx.badlogicgames.com/nightlies/docs/api/com/ badlogic / gdx / assets / loaders / TextureLoader.TextureParameter.html#genMipMaps`TextureLoader.TextureParameter textureParameter = new TextureLoader.TextureParameter(); textureParameter.genMipMaps = true; assetManager.load(textureName,Texture.class,textureParameter);`, (2认同)

小智 0

尝试使用相同的 minFilter 和 maxFilter。我有一个类似的问题,如果我放置TextureFilter.Linear、TextureFilter.Linear 或两者MipMap,问题就可以解决。希望这可以帮助。