【问题标题】:How to handle Galaxy S4 resolution since it's too high for AndEngine RatioResolutionPolicy如何处理 Galaxy S4 分辨率,因为它对于 AndEngine RatioResolutionPolicy 来说太高了
【发布时间】:2014-01-07 12:48:51
【问题描述】:

我将按照本教程开始使用 AndEngine:

http://www.matim-dev.com/full-game-tutorial---part-1.html

但是这家伙在这个测试中看起来使用的是低分辨率设备,我使用的是分辨率为 1920x1080 的 Galaxy S4,是的,该死的高。

我知道关于 RatioResolutionPolicy 的事情,但即使我在 S4 中使用 800x480,我也从两侧得到了 2 个白色条纹 (LANDSCAPE),如果它没有很好地调整大小,我是否需要包含另一个壁纸屏幕分辨率非常高的设备?

另外,这个人在教程中使用的一些坐标在我的 S4 上放置不好,我应该如何使所有设备都与此兼容?

添加代码:

    private static int CAMERA_WIDTH = 800;
    private static int CAMERA_HEIGHT = 480; 

    @Override
    public EngineOptions onCreateEngineOptions() {
        camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
        EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.camera);
        engineOptions.getAudioOptions().setNeedsMusic(true).setNeedsSound(true);
        engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
        return engineOptions;
    }

【问题讨论】:

  • 你的相机高宽是多少?
  • 我的相机高度和宽度当然设置为 800 x 480 硬编码。我的 S4 是 1920x1080 :/ 为什么这么高,是吧? (更新了帖子,以便您可以看到那段代码)
  • 您使用的图像是否兼容480X800。您可以根据您的目标分辨率固定相机的高度和宽度
  • 我的图像是 800x480 是的,就像背景主菜单之一。但是......看起来800x480无法适应1920x1080......这就是为什么我在边框上出现白色条纹......我想知道,我将如何支持每一个分辨率? ://
  • 为什么要坚持该政策。您可以尝试其他分辨率政策,如裁剪、全屏...

标签: android andengine


【解决方案1】:

您的问题不是分辨率,而是比率。您的相机的比率为 1.66,而您的设备的比率为 1.77,几乎相同,但不一样。

您需要计算比率。 Andengine 会把摄像头投射到任何设备上,这就是 opengl 和摄像头的神奇之处,但是如果比例不一样,它就必须放那条线,以避免图像被裁剪或扭曲,比如当你看到一个 4 时: 16:9 电视中的 3 部电影

解决方案是让设备具有相同比率的相机,因此如果比率不同,则没有白色条纹,但例如一些额外的背景。

例如,在您的情况下,您获取设备尺寸,获取比率 (1920/1080=1.7777),因此您可以创建具有该比率的相机。即:

    float device_ratio = DEVICE_HEIGHT/DEVICE_WIDTH;// in this case 1.7777 
    CAMERA_WIDTH = 800;
    CAMERA_HEIGHT = 800/device_ratio ; /// this will be 450

因此,您将拥有一个 800x450 的相机,并且您可以拥有该尺寸的背景(或者您可以裁剪的更大的背景)。也就是说,您不必使用设备全尺寸的图像,而只需创建一个与设备尺寸相同的相机,并创建在该相机中看起来不错的背景。你在那个 800x450 的“画布”中创建你的世界,andengine 会将它投影到真实设备中。由于比例相同,所以一切看起来都很好。没有裁剪,没有扭曲,也没有多余的线条。

现在您必须以更相对的方式思考,因为您的相机并不总是完全相同,具体取决于设备。如果您没有很多硬编码值,这很简单。

【讨论】:

  • 尝试使用 1920x1080 主菜单背景我收到来自应用程序的错误提示 puu.sh/6cmzt.png 哈哈 :(
  • 你不需要那么大的背景,实际上我不知道 GPU 纹理有多大,但我觉得那太多了。您只需要一个在该纵横比下看起来不错的背景,或者一个您可以裁剪并且比您的相机多一点的背景,因此它适用于任何比例。但是背景小就够了,你只需要尊重比例。
  • +1 到@CarlosRobles - 这是关于比率,而不是实际大小。你也是正确的——不要使用 1920x1080——使用类似 1024x576 的东西并保持你的纹理
  • 正是@jmr499485。而且,为了获得最佳性能,您可以跟踪图像在纹理中的放置位置,并使用可用空间放置更多图像,您是否可以尽可能多地使用 1024×1024
  • 它的另一面是 - 如果您按照 S4 的宽高比设计它,它在具有不同宽高比的其他设备上看起来会有所不同。理想的解决方案是针对 3 种常见的纵横比进行设计,并确定在运行时加载适当资产所需的一种。
猜你喜欢
  • 2013-05-05
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2011-05-23
  • 2016-01-16
相关资源
最近更新 更多