Cocos2d-x 在 iPad Air(4th Gen) 和 iPadPro 11 英寸中的显示分辨率问题
Posted
技术标签:
【中文标题】Cocos2d-x 在 iPad Air(4th Gen) 和 iPadPro 11 英寸中的显示分辨率问题【英文标题】:Cocos2d-x Display resolution problem in in iPad Air(4th Gen) and iPadPro 11 inch 【发布时间】:2021-03-23 03:25:16 【问题描述】:我为所有 iPad 设备使用了 2048x1536 的资源。 iPad Air(第 4 代)和 iPadPro 11 英寸的分辨率并不完美。
在所有其他 iPad 显示正确。
在 Cocos2dx v4.0 中测试
这是我的代码:
if (MyGameBridge::sharedGameBridge()->IsIpad())
auto designSize = Size(1024, 768);
auto resourceSize = Size(2048, 1536);
director->setContentScaleFactor(resourceSize.height/designSize.height);
searchPaths.push_back("Data/iPad");
我的 AppDelegate 类有问题..
这里是 AppDelegate.cpp:https://app.box.com/s/i1zubskcq4hqky4e9depfcwlskm4xzmc
这是 Cocos2d v4 我的示例:https://app.box.com/s/6dp8o5ccbe8dtvulilficb3uk4b34keo 请检查并帮助我。
在这个示例源中,您可以看到 iPad Air(4thGen) 分辨率问题,在 iPadPro(11inch) 中也是如此。在所有其他 iPad 上都可以完美运行。为 iPadAir(4thGen) 使用单独的资源集可能有效..但是如何为所有 iPad 使用单一的图形集?
【问题讨论】:
【参考方案1】:您正在取消 ResolutionPolicy::NO_BORDER,因为可能会发生策略裁剪。
NO_BORDER:整个应用程序填充指定区域,不失真但可能有一些裁剪,同时保持应用程序的原始纵横比。
当您使用 SHOW_ALL 时:整个应用程序在指定区域内可见而不会失真,同时保持应用程序的原始纵横比。边框可以出现在应用程序的两侧。
【讨论】:
SHOW_ALL 更好,但两边都显示黑条...请检查app.box.com/s/6dp8o5ccbe8dtvulilficb3uk4b34keo,如果您知道如何正确设置视口,请告诉我 ResolutionPolicy::EXACT_FIT 修复一切...非常感谢您的提示。 我也使用“精确拟合”,但我不喜欢缩放,圆圈变成椭圆。我通过在图层上放置一个滚动视图并将其缩放回正确的纵横比来解决它,这样圆圈不是椭圆形并且没有黑色边框,而是图层的背景,我可以自己填充精灵(上方和下方) )。 float aspectDesign = Director::getInstance()->getOpenGLView()->getDesignResolutionSize().height / Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width; float aspectFrame = Director::getInstance()->getOpenGLView()->getFrameSize().height / Director::getInstance()->getOpenGLView()->getFrameSize().width; scrollView->setScaleY(aspectDesign/aspectFrame);以上是关于Cocos2d-x 在 iPad Air(4th Gen) 和 iPadPro 11 英寸中的显示分辨率问题的主要内容,如果未能解决你的问题,请参考以下文章