平板电脑的性能问题

时间:2014-07-02 11:26:40

标签: libgdx

我正在使用libgdx 1.1.0和脊柱开发点球大战。游戏屏幕包含2个脊柱动画,一个用于按钮和标签的scene2d舞台,以及用于剩余视觉对象的spriteBatch渲染。我只有一个资产768x1280,根据屏幕尺寸进行缩放。游戏在5,6英寸屏幕下的Android设备上运行50-60 fps,但平板电脑性能低于35 fps。

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

我是否有任何错过平板电脑性能的配置? 如果您能分享有关性能的建议,特别是平板电脑设备,我真的很感激吗?

1 个答案:

答案 0 :(得分:0)

此处使用的TextureFilter是放大滤镜,因为您拥有的Texture分辨率较低,然后会消耗掉它。
您使用的TextureFilter(线性)获取4个最近的像素,并且从它们的颜色中计算出当前像素的颜色。因此,对于屏幕上的每个像素,它必须获取4个像素 您现在使用的滤镜(最近的滤镜)仅获取最近的像素,因此它在屏幕上每个像素获取一个像素,这会降低性能,但质量较低。
解决方案是使用MipMapping。您只需创建一个MipMap链,它是一个从1024 * 1024到512 * 512到256 * 256 px的图像链,依此类推。我不确定你是否需要自己(在运行时)或者libgdx为你做这件事。然后你需要使用正确的TextureFilter,它是以下之一:

GL_NEAREST_MIPMAP_NEAREST ,这将根据像素/纹素比从mip贴图链中获取最佳拟合图像,然后使用最近的滤镜对纹素进行采样。

GL_LINEAR_MIPMAP_NEAREST ,这将根据像素/纹素比从mip贴图链中获取最佳拟合图像,然后使用线性滤镜对纹素进行采样。 Ya,你最后没有指定mip map过滤器的类型(这里是NEAREST)和第一个实际的texel过滤器

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

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

在渲染背景时,可以通过消除混合来创建另一个小的性能提升,因为不需要它。如果您的camras视野中有物体,请不要draw它们。在致电spritebatch.draw(texture, pos.x, pos.y)之前,请确保pos.xpos.y可见。

有关TextureFilters

的内容

我希望它有所帮助!