我有一个问题,一直折磨我一个月,也许更多。背景大约为9000x13000
像素。我正试图将这个背景带到屏幕上。由于我的视频卡仅支持分辨率不超过8192x8192
像素的纹理,因此会显示黑色区域而不是纹理。我将图像压缩为5000x7000
像素。现在它显示,但FPS已降至50
(除了一个图像没有任何内容)。此外,该游戏还可以在移动设备上运行,视频卡的局限性可能是2048x2048
纹理,也可能更少。我试图将我的大纹理分成117块(每块不超过1024x1024像素)并一个接一个地拉它们。现在游戏的负载大约是一分钟,当纹理输出时,FPS下降到5
!我试图使用过滤器
texture.setFilter(
Texture.TextureFilter.MipMapNearestNearest,
Texture.TextureFilter.Nearest
);
但是FPS没有超过10.它还在加载时将useMipMap标志设置为true。目前我正在这样做:
Texture texture=new Texture(file, true);
texture.setFilter(
Texture.TextureFilter.MipMapNearestNearest,
Texture.TextureFilter.Nearest
);
public void render()
{
batch.begin();
batch.draw(texture,0,0,Gdx.graphics.getScreenWidth(),Gdx.graphics.getScreenHeight());
batch.end();
}
告诉我,如何优化大纹理的输出? 这个纹理是一个地图,所以当接近大屏幕时,它应该清楚详细。
我将不胜感激任何帮助
答案 0 :(得分:0)
我没有使用libgdx测试它,但我认为值得尝试根据游戏中当前的缩放级别选择显示的纹理/纹理的几种变体,此外还有原始纹理切成碎片。考虑放大时在Google地图中加载图片。
想法
让我们通过以下方式将缩放级别定义为数字:
然后是如何定义纹理:
现在,当用户缩小时,使用纹理#4。当用户放大到3级或更低级别时,仍会显示纹理#4,同时加载缩放纹理集。然后使用fadeIn / out进行平滑过渡,以获得更好的视觉效果。
更多提示