当我尝试在LibGDX中使用mipmap过滤器时,所有的图像都无法显示。
我是LibGDX的新手,我的简单2D场景中有三个旋转和缩放的圆。为了抗锯齿,我想使用线性过滤。为了获得建议,我查看了this article,其中提到对于高度缩放的图像,可以使用mipmap来提高速度或质量。
第一个意外的现象是,尽管我的所有图像都被缩小了,但只有当magFilter是linear时,我才能看到线性过滤器。换句话说: 这段代码将显示缩小后图像的线性过滤器:
这并不会让我烦恼,除非它表明了libgdx错了(不太可能),文章错了(不太可能),或者是我对纹理过滤的理解有误。当我尝试使用mipmap过滤器时,后者似乎特别可能发生。 这段代码导致没有任何内容显示
任何关于我错误的解释都将不胜感激。我已经在其他地方搜索过了,但是libGDX中的纹理过滤器非常特定,所以除了这篇文章之外,我没有找到太多帮助。
我是LibGDX的新手,我的简单2D场景中有三个旋转和缩放的圆。为了抗锯齿,我想使用线性过滤。为了获得建议,我查看了this article,其中提到对于高度缩放的图像,可以使用mipmap来提高速度或质量。
第一个意外的现象是,尽管我的所有图像都被缩小了,但只有当magFilter是linear时,我才能看到线性过滤器。换句话说: 这段代码将显示缩小后图像的线性过滤器:
parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);
而这段代码则不会:
parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest);
这似乎与libGDX函数相反:
void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter)
这并不会让我烦恼,除非它表明了libgdx错了(不太可能),文章错了(不太可能),或者是我对纹理过滤的理解有误。当我尝试使用mipmap过滤器时,后者似乎特别可能发生。 这段代码导致没有任何内容显示
parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear);
此代码显示,但使用最近过滤
parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear);
任何关于我错误的解释都将不胜感激。我已经在其他地方搜索过了,但是libGDX中的纹理过滤器非常特定,所以除了这篇文章之外,我没有找到太多帮助。
AssetManager
的用户而言,可以通过将TextureParameter.genMipMaps
设置为 true 并在加载纹理时将该纹理参数传递给AssetManager
来实现: https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/TextureLoader.TextureParameter.html#genMipMapsTextureLoader.TextureParameter textureParameter = new TextureLoader.TextureParameter(); textureParameter.genMipMaps = true; assetManager.load(textureName, Texture.class, textureParameter);
- Denys Kniazhev-Support Ukraine