首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Libgdx和TexturePacker对xxxdpi图像进行失真

使用Libgdx和TexturePacker对xxxdpi图像进行失真
EN

Stack Overflow用户
提问于 2016-04-18 09:26:37
回答 1查看 419关注 0票数 7

我是一名安卓开发者,用LibGDX构建我的第一款游戏。看了很多书之后,还有一件事我还是不明白。

我意识到我应该有一组图像,用于最高分辨率的2560x1440 (用于防止丑陋的缩放而不是矢量图像)。

我使用TexturePacker来打包我的图像,甚至用线性线性来获得最大质量:

代码语言:javascript
复制
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);

我已经设置了我的相机,在几个这样的建议,固定仪表,并避免所有的PPM的东西。屏幕上的C‘’TOR:

代码语言:javascript
复制
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大小的精灵,我在这里做的是:

代码语言:javascript
复制
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("images/pack.atlas"));
mImage = atlas.createSprite("image"));
mImage.setSize(mImage.getWidth() / 100 , mImage.getHeight() / 100);

这是工作和图像显示的预期。但是,他们被扭曲得像地狱一样!一个完美的圆形图像看起来像像素在边缘,而不是圆形。

所以,我的问题是:

  1. 这是最好的做法还是我该换个工作方式?
  2. 我是否正确的只有最高质量的图像?
  3. 这种扭曲是否意味着我的代码真的在缩小精灵,不知怎么的,libgdx又一次放大了它,破坏了它的质量?

谢谢!

编辑

我将把@TenFour04的答案改编为(1)和(2)。

关于(3),问题在于Genymotion :(其像素化游戏)。我已经在真正的设备上测试过几种分辨率,而且看起来很完美。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-18 13:10:51

  1. 您在设置相机时有一个错误:假设屏幕的高宽比总是相同的,但实际上它会有所不同。最好选择一个恒定的高度或宽度(根据您正在制作的游戏类型选择),并根据当前屏幕的纵横比调整相反的维度。例如: mCamera.viewportHeight = 25.6f; //game screen always 25.6 meters tall mCamera.viewportWidth = 25.6f / (float)Gdx.graphics.getHeight() * (float)Gdx.graphics.getWidth();
  2. “我应该有一组最高分辨率的图像”这不一定是真的。如果你这样做,你将不得不在无法利用它们的设备上加载非常高分辨率的图像。这将使用大量的内存和膨胀加载时间。在开发过程中,它可能很好,但是接下来您可能希望有两个或三个不同的较小分辨率版本,您可以选择性地加载这些版本。 出于这个原因,我也将避免硬编码,即100在您的代码中无处不在。让pixelsPerMeter成为一个在游戏开始时设置一次的变量。现在它只可以是100,但是如果您决定稍后进行一些较小的分辨率处理,那么您可以相应地调整它,而不必在代码中找到所有100的出现。
  3. 您的最小过滤器应该是MipMapLinearLinearMipMapLinearNearest。否则,当精灵被绘制得比它们的本机分辨率更小时,性能将受到影响,并且可能会像您所描述的那样看起来扭曲。您可以查找mip映射,以了解为什么会出现这种情况。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36690067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档