【问题标题】:Performance Issue on Tablets平板电脑的性能问题
【发布时间】:2014-07-02 11:26:40
【问题描述】:

我正在使用 libgdx 1.1.0 和 spin 开发一个点球游戏。包含 2 个脊椎动画、一个用于按钮和标签的场景 2d 阶段以及用于剩余视觉对象的 spriteBatch 渲染的游戏屏幕。我只有一项资产为 768x1280,它根据屏幕尺寸进行缩放。游戏在 5.6 英寸屏幕下的 Android 设备上运行在 50-60 fps 之间,但平板电脑的性能低于 35 fps。

我已将我的图集文件的过滤器从 Min(Linear)、Mag(Linear) 更改为 Min(Nearest)、Mag(Nearest),性能更好,为 40fps,但这次图像视觉质量很差。

我错过了关于平板电脑性能的任何配置吗? 如果您能分享您对性能的建议,尤其是在平板设备上,我真的很感激?

【问题讨论】:

  • 您可以尝试在您的平板电脑上进行互联网搜索,看看它是否因 GPU 性能不足而闻名。如果您在绘制背景时关闭混合,您可能会获得适度的改进(如果您还没有)。

标签: libgdx


【解决方案1】:

这里使用的TextureFilter是放大滤镜,因为你的Texture分辨率较低,那么它会用完的地方。
您使用的TextureFilter(线性)获取最近的 4 个像素,并根据它们的颜色计算当前像素的颜色。因此,对于屏幕上的每个像素,它必须获取 4 个像素。
您现在使用的过滤器,最近的过滤器,仅获取最近的像素,因此它在屏幕上每个像素获取一个像素,这会降低性能但质量会降低。
解决方案是使用 MipMapping。您只需创建一个 MipMap 链,它是从 1024*1024 到 512*512 到 256*256 像素等的图像链。我不确定您是否需要自己(在运行时)执行此操作,或者 libgdx 是否为您执行此操作。然后你需要使用正确的TextureFilter,它是以下之一:

GL_NEAREST_MIPMAP_NEAREST,这将根据像素/纹素比从mip 映射链中获取最合适的图像,然后使用最近的过滤器对纹素进行采样。

GL_LINEAR_MIPMAP_NEAREST,这将根据像素/纹素比率从mip 映射链中获取最佳拟合图像,然后使用线性过滤器对纹素进行采样。是的,这不是你最后指定 mip 映射过滤器(这里是 NEAREST)和首先指定实际纹素过滤器的类型

GL_NEAREST_MIPMAP_LINEAR,这将从mip映射链中获取两个最合适的图像,然后从两个图像中的每一个中采样最近的纹素,将它们组合到最终的输出像素

GL_LINEAR_MIPMAP_LINEAR,这将从 mip 映射链中获取两个最合适的图像,然后从两个图像中的每一个中采样四个最近的纹素,将它们组合到最终的输出像素

在渲染背景时禁用混合可以创建另一个小的性能提升,因为它不需要。如果您的相机视野之外有物体,请不要draw 他们。在调用 spritebatch.draw(texture, pos.x, pos.y) 之前,请确保 pos.xpos.y 可见。

关于TextureFilters的一些读物

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2015-03-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多