分辨率独立显卡为Android游戏

时间:2014-01-03 18:55:45

标签: android libgdx resolution

我正在使用libgdx开发一款Android游戏,并将虚拟摄像机的宽度/高度定义为:800x1280。

我有3个测试设备:

  1. Nexus 5 1920 x 1080显示(445 ppi)
  2. Nexus S 480 x 800像素(233 ppi)
  3. Nexus 10 2560 x 1600(300 ppi)
  4. 我正在使用GIMP来开发图形。 如何在GIMP中为精灵,硬币和背景图片选择合适的尺寸,以便它不会像素化显示?我不只是想选择极高的分辨率并且不必增加应用程序大小。所有图形都必须是2的幂吗?

2 个答案:

答案 0 :(得分:2)

对于手机上的OpenGL,它必须具有2个纹理的功能,但有些设备可能支持2个纹理的非功率(有一些限制)。因此,如果你想确保它能够坚持使用2个纹理的力量。

对于通用绘图我认为任何事情都可以没有限制,我的意思是通用绘图,布局中的位图。

通常由你决定如何解决独立性问题,因为首先你可能会遇到宽高比问题会导致像16:9中的4:3那样的失真,因此你必须对此做些什么3D游戏的常用方法是让相机在16:9中“看到”更多。

无论如何,一般来说你应该使用android的内置方法为当前显示器选择最佳图像集,据我所知,它不仅仅是选择最接近你实际像素的分辨率的像素大小你将看到可能会因设备(ppi)而异。

另一种解决这个问题的方法是,每次运行时都可以生成图像,每次都是最合适的,我说你存储源并在启动时预渲染图像以使它们最有效合适的。

因此,在质量和速度之间进行权衡的最好方法是为不同的屏幕设置不同的设置,并在启动时选择最佳(或让android为您执行此操作)并使用这些图像进行渲染。 如果您只想使用一组图像,请尝试对其进行调整,使其在较大的屏幕上看起来没问题,因为向下缩放往往看起来比向上缩放更好。

答案 1 :(得分:2)

如果你使用OpenGLES1.x,是的,纹理必须是2的幂。如果你使用OpenGLES2.0,那么它们不会被强制使用,但是有些设备不支持它们。

建议您始终使用2个纹理的力量。尝试在大型地图集中获取所有图像(例如1024x1024)。这将为您带来非常大的性能提升。

另外,我建议您为已经使用的相机视口制作图形(800x1280)。
并决定是否要以不同的屏幕比例拉伸图形,或者让精灵看起来相同但改变每个用户可以看到的世界的数量。

对于第一个,请保留您的视口(800x1280)它将自动拉伸 对于第二个,使你的长边固定并计算另一边。 (或者相反,它取决于您是否希望用户在水平或垂直方向上看到更多或更少)。像这样:

cam = new OrthographicCamera(((float)Gdx.graphics.getWidth()/Gdx.graphics.getHeight())*800, 1280);

我建议您将它们设置为800x1280,并对图像使用线性滤镜,以便在拉伸/收缩时看起来不像素。

texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);