【问题标题】:How to set a texture filter如何设置纹理过滤器
【发布时间】:2019-06-24 04:51:50
【问题描述】:

设置纹理过滤器有多重要?

在本书Java Game Development with LibGDX的第3章中,他们设置了一个纹理过滤器。

当我使用资产管理器加载视频资产时,我无法将纹理区域转换为纹理以设置纹理过滤器。

但是我可以像这样在整个 spritesheet 上设置纹理过滤器:

textureAtlas = assetManager.get("images/packed/game.pack.atlas") // all images are found in this global static variable
        textureAtlas!!.findRegion("button").texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)

设置纹理过滤器有多重要?这是一个好的解决方案吗?如何从图集中获取纹理?

【问题讨论】:

  • gamedevelopment.blog/texture-filter 有一个关于 libgdx 中纹理过滤器的很好的指南/教程。
  • 谢谢,我现在知道更多关于何时应用哪个过滤器了。

标签: libgdx


【解决方案1】:

纹理总是有一个过滤器。如果您不设置一个,它将具有(最近,最近)的默认过滤器。此滤镜适用于复古图形(像素化外观)。否则,您很可能希望使用 (MipMapLinearLinear, Linear)。如果您的游戏已基本完成,并且您已将精灵绘制确定为性能瓶颈,那么您可以降级到 (MipMapLinearNearest, Linear)。

使用 TexturePacker 创建图集时,有一个纹理过滤器选项,如果您设置了,则无需在游戏中加载 TextureAtlas 后进行设置。您还可以在包文件的顶部添加一行,如下所示:

filter: MipMapLinearLinear,Linear

否则,如果您想在图集上设置它,可以使用单页图集来执行您所做的操作,并使用来自任何纹理区域的纹理引用应用过滤器,因为它们都在引用相同的纹理实例。但是TextureAtlases可以有多个页面,所以这样做会更合适:

for (Texture texture : textureAtlas.getTextures())
    texture.setFilter(...);

编辑:要将设置添加到 TexturePacker 构建,请将名为 pack.json 的文本文件放在包含源图像的目录中。您只需添加要从默认值更改的设置。 LibGDX 可以读取简化的 json,它省略了没有空格的元素的引号。所以要设置纹理过滤器,这就是你在文件中所需要的:

{
    filterMin: MipMapLinearLinear,
    filterMag: Linear
}

【讨论】:

  • 谢谢你的回答,这让我很高兴。但是不清楚如何在docs 中实际添加设置,您能否详细说明如何执行此操作?在 build.gradle 文件中执行似乎是个好主意。
  • 不是 build.gradle 文件,而是 pack.json 文件。请参阅上面的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多