我是一名安卓开发者,正在使用LibGDX构建我的第一个游戏。经过大量阅读,仍有一件事我不明白。我意识到我应该有一套图片,针对最高分辨率2560x1440(为了避免丑陋的向上缩放而不是矢量图像)。我使用TexturePacker打包我的图片,甚至使用线性线性获取最大质量:
这个方法可以使用,图片也能按预期显示。但是它们非常失真!一个完美的圆形图像在边缘处看起来像素化且不圆。 所以,我的问题是:
编辑
我将根据@Tenfour04的答案调整(1)和(2)。 关于(3),问题出在Genymotion上:(,它会使游戏像素化。我已经在几种分辨率的真实设备上进行了测试,效果很完美。
TexturePacker.Settings settings = new TexturePacker.Settings();
settings.filterMin = Texture.TextureFilter.Linear;
settings.filterMag = Texture.TextureFilter.Linear;
settings.maxWidth = 4096;
settings.maxHeight = 2048;
TexturePacker.process(settings, inputDir, outputDir, packFileName);
我已经按照几个stackoverflow上的建议,将相机设置为固定米数并避免使用PPM。从Screen的C'TOR中可以看到:
mCamera = new OrthographicCamera();
mCamera.viewportWidth = 25.6f; ; // 2560 / 100
mCamera.viewportHeight = 14.4f ; // 1440 / 100
mCamera.position.set(mCamera.viewportWidth / 2, mCamera.viewportHeight / 2, 0f);
mCamera.update();
正如您所看到的,我选择将1米=100像素。
那么,这意味着我应该使用1/100的尺寸来绘制我的精灵,我正在这里进行:
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("images/pack.atlas"));
mImage = atlas.createSprite("image"));
mImage.setSize(mImage.getWidth() / 100 , mImage.getHeight() / 100);
这个方法可以使用,图片也能按预期显示。但是它们非常失真!一个完美的圆形图像在边缘处看起来像素化且不圆。 所以,我的问题是:
- 这是最佳实践吗?还是我应该采用不同的方法?
- 只使用最高质量的图像是正确的吗?
- 失真是否意味着我的代码真的在缩小精灵,而libgdx又将其放大并损坏了质量?
编辑
我将根据@Tenfour04的答案调整(1)和(2)。 关于(3),问题出在Genymotion上:(,它会使游戏像素化。我已经在几种分辨率的真实设备上进行了测试,效果很完美。