【问题标题】:Libgdx - TexturePacker combination of texture filtersLibgdx - TexturePacker 组合的纹理过滤器
【发布时间】:2015-03-09 13:57:04
【问题描述】:

很抱歉,因为这是一个常见的话题,而且还没有找到广泛认同的解决方案。

我们有一个大小为 1220 x 1080 的游戏世界“网格”(基于我们设计师的 photoshop 设计)。目前我们在 Nexus 4 (1280x768 @320DPI) 和 TF201 Transformer Prime 平板电脑 (1280x800 @149DPI) 上进行测试。

在使用 TexturePacker 打包纹理时,我们对使用哪种过滤器组合感到有些困惑。我们已阅读以下页面:

http://www.badlogicgames.com/wordpress/?p=1403

.. 当使用“Nearest, Nearest”时,我们的 FPS 可以达到 60,但资产变得像素化。现在我们使用“Mipmap, Mipmap”打包,我们的 FPS 下降到 30,但纹理再次平滑边缘。

这些过滤器的组合是否达成了一致,或者它们只是依赖于需求? Packer中的“min filter”和“mag filter”有相当多的组合设置,所以不要一直随机设置它们,直到一切都顺利调整大小并且FPS再次高,而不完全理解它是什么正在做。

非常感谢。 J

【问题讨论】:

  • 如果你不经常缩放你的精灵,没有mipmaps的线性线性通常就足够了。

标签: java android filter libgdx textures


【解决方案1】:

如果您支持多种屏幕尺寸(如果您的目标是 Android),则 Mag 过滤器应始终为线性。没有 mip-mapped mag 过滤器之类的东西,在一些甚至无法工作的设备上(你会得到纯黑色)。这是一种“陷阱”,因为某些设备只会假设您的意思是线性并为您修复它,因此如果您无法在不为您执行此操作的设备上进行测试,您将不会意识到问题。 Nearest 在拉伸得更大时会显得像素化,并且您只会在制作复古低分辨率图形或绘制像素完美的东西时才想使用它。

您可以为 Min 过滤器选择以下选项之一,从最快(最差)到最慢(最好看):

  • 最近 - 这看起来会像素化,我想不出在任何情况下这将是最小过滤器的正确选择。
  • MipMapNearestNearest - 看起来或性能不会比最近的好,而且会使用更多内存。没有理由使用它。
  • MipMapNearestLinear - 从两个最近的 mip 中获取最近的像素,然后在它们之间进行线性插值。这仍然看起来像素化。我认为这也从未使用过。
  • MipMapLinearNearest - 获取最近的 mip 级别并线性确定像素颜色。我认为这在移动设备上最常用于平滑图形。它的执行速度明显快于以下选项,但在某些情况下,它看起来会有些模糊(当最近的 mip 对屏幕上的内容来说有点偏小时)。
  • MipMapLinearLinear - 获取两个最接近的 mip 级别,线性确定每个级别的像素颜色,然后在两者之间进行线性混合。如果您有一个从零缩小到全尺寸的精灵,您可能无法检测到从最小到最大的质量差异。但这也很慢。过去,我将它的使用限制在我的字体中。三年前,我还做过一个可以在新设备上以 60fps 运行的项目,我在所有东西上都使用了它。我在那个应用程序中对过度绘制非常小心,所以我可以侥幸逃脱。

最后是线性过滤,它看起来并且的性能比 mip-mapping 选项差(对于 Min 过滤器):

  • 线性 - 如果屏幕上的图像比其原始纹理略小,这将看起来很平滑。这不会消耗 mip 映射所使用的 33% 的额外纹理内存,但如果纹理小于原始纹理的 50%,则性能将比使用 mip 映射时更差,因为对于每个屏幕像素,它将具有从原始纹理中采样和混合超过四个像素。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 2016-05-18
    • 1970-01-01
    • 2013-08-07
    • 2014-07-03
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多