【问题标题】:Cocos2d-x setContentSize gives poor graphic qualityCocos2d-x setContentSize 给出的图形质量很差
【发布时间】:2017-05-03 07:40:22
【问题描述】:

我想创建大小与屏幕大小相关的精灵。 即:精灵大小等于屏幕宽度 * 0.2。

我使用setContentSizesetScale,但它提供了丑陋和糟糕的图形质量。 我已经阅读了多分辨率支持,但它不适用于这种情况,因为我需要精灵大小适应任何屏幕大小。

在 iPhone 7 上进行测试,我将图像从 512x512 缩放到 64x64。

这是cocos2d-x的错误还是要存档?

【问题讨论】:

    标签: graphics cocos2d-x sprite screen-resolution


    【解决方案1】:

    根据设备大小进行相应的缩放。

    yourSprite->setScale(mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2, mainScene->getContentSize().width / yourSprite->getContentSize().width * 0.2);
    

    并且不要使用setContentSize

    【讨论】:

    • setScale 的结果与setContentSize 相同
    • @TomSawyer 也许您正在将该精灵放到另一个图像尺寸较小的精灵中?
    • 不,我创建了单独的精灵。我发现这个错误只发生在真实的设备上(我使用的是 iPhone 7)。在模拟器上使用setScale代替setContentSize可以解决这个问题。
    • 你有同样的经历吗?我被困在这里,唯一的方法是为不同尺寸创建多个版本的精灵?
    • 不,我没有遇到过缩放问题。你能发布你是如何创建精灵的以及你添加它的地方吗?
    【解决方案2】:

    您可以根据根据您的设备屏幕尺寸和您使用的 ResolutionPolicy 计算的内容比例因子来缩放您的精灵。

    auto sprite= Sprite::create("xyz.png")
    sprite->setScale(Director::getInstance()->getContentScaleFactor());
    

    【讨论】:

    • 我尝试过setScale,但结果与setContentSize 相同。仅当图像尺寸接近目标尺寸(如 150->32)时才有效,但 512->32 会非常糟糕。
    • 对于大小的主要变化(512->32),您需要创建不同大小/分辨率的资源,并根据设备分辨率设置该资源的路径。这是一个理想的解决方案。很明显,如果我们扩大或缩小任何规模,我们正在降低资源质量。
    • 放大会降低图形质量,但从大到小必须保持质量。你可以在这里看到图片:discuss.cocos2d-x.org/t/setcontentsize-gives-poor-graphic/36606/… 我发现我只有在真正的设备(iPhone 7)上才有这个问题,在 iPhone 6 模拟器上使用setScale 进行测试,这很好。这是cocos的bug吗?
    • 以任何方式向上/向下缩放,图像质量会根据缩放程度而降低。在您的链接中,您缩放第一张图像 512->32 所以比​​例因子是 .0625 另一个是 64->32 ,所以比例因子是 .5 。更大程度的缩放(向上/向下)会降低该图像的更多质量。
    • 我不知道 cocos 在缩放方面做了什么,但是任何语言上的任何调整图像大小的机制都可以在从大到小缩放时提供可接受的质量。将 2048 大小调整为 32 得到与 64 到 32 相同的结果。
    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2021-05-03
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多