我正在使用 libgdx 开发一款 Android 游戏,并将虚拟相机的宽度/高度定义为:800x1280。
我有 3 个测试设备:
- Nexus 5 1920 x 1080 显示屏 (445 ppi)
- Nexus S 480 x 800 像素 (233 ppi)
- 连结 10 2560 x 1600 (300 ppi)
我正在使用 GIMP 来开发图形。 我如何在 GIMP 中为 sprite、硬币和背景图片选择合适的大小,以免显示像素化?我不只是想选择极高的分辨率并增加不必要的应用程序大小。所有图形都必须是 2 的幂吗?
最佳答案
如果您使用 OpenGLES1.x,是的,纹理必须是 2 的幂。如果您使用 OpenGLES2.0,则不会强制它们,但有些设备无论如何都不支持它们。
建议您始终使用 2 次幂的纹理。尝试获取大 map 集中的所有图像(例如 1024x1024)。这会给你带来非常大的性能提升。
此外,我建议您为您已经在使用的相机视口(viewport)制作图形 (800x1280)。
并决定您是希望以不同的屏幕比例拉伸(stretch)图形,还是让 sprite 看起来相同但改变每个用户可以看到的世界范围。
首先,让您的视口(viewport)保持这样 (800x1280) 它会自动拉伸(stretch)。
第二,让你的长边固定并计算另一边。 (或者反过来,这取决于您是否希望用户在水平或垂直方向上看到更多或更少)。像这样:
cam = new OrthographicCamera(((float)Gdx.graphics.getWidth()/Gdx.graphics.getHeight())*800, 1280);
我建议您为 800x1280 制作它们,并对图像使用线性滤镜,这样它们在拉伸(stretch)/收缩时看起来不会像素化。
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
关于android - Android 游戏的分辨率独立图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910790/