在我的cocos2d-x游戏中,我的设计分辨率是768x1024(人像),我使用"kResolutionShowAll"策略(因为我想遵守资产比率)。在某些屏幕分辨率(例如Windows 8 PC 1920 x 1080)上,我的两侧有黑色边框。
我想避开这些边界。我的想法是放置一些图像作为背景,并拉伸它以填充整个屏幕,这样可以避免黑色边界(因此,场景应该在背景之上渲染)。
我的问题是:如何做到这一点?无论我如何缩放背景图像,它总是在显示分辨率内渲染。。。
谢谢!
首先,找出您要瞄准的设备系列的最大分辨率。例如,如果您的目标是Android系列,则最大分辨率为>gt>2560x1600(nexus系列)您可以以这种分辨率创建资产,然后根据设备的不同纵横比对其进行缩放(缩放策略,在您的情况下为"kResolutionExactFit")
顺便说一句,显示边界没有害处,有几个游戏就是这样做的。当我们面对这个问题时,我们应用了与我上面提到的相同的策略(2560x1600分辨率的图像,具有kResolutionShowAll策略);setDesignResolutionSize";至";(16002560)";
因此,在2560x1600分辨率的设备上,它很适合,但在1920x1080/1280x720设备上,有边界。请注意,太大的图像在渲染时也会导致黑屏,即,如果设备无法渲染图像(图像大于设备的最大纹理大小),cocos2dx将不会渲染图像。在这种情况下,您可以使用
CCConfiguration* conf = CCConfiguration::sharedConfiguration();
conf->getMaxTextureSize() // to check if a device is capable of rendering such image, if not you can use a lower resolution version
或者,你也可以有2个不同的设计分辨率。
话虽如此,如果你坚持";kResolutionShowAll";,你的比赛可能看起来有些紧张。为了参考,我分享了不同策略的定义;
kResolutionShowAll
根据屏幕的宽度和高度以及设计分辨率来确定比例因子,选择因子的较小值作为比例因子。这可以确保所有的设计区域都可以显示在屏幕上,但可能会在屏幕上留下一些黑色区域。
kResolutionExactFit
将屏幕的宽度比和设计分辨率设置为X轴上的比例因子,将屏幕的高度比和设计决议设置为Y轴上的缩放因子。这样可以确保设计区域覆盖整个屏幕,但画面可能会被拉伸。
kResolutionNoBorder
根据屏幕的宽度和高度以及设计分辨率来确定比例因子,选择较大的一个作为比例因子。这可以确保一个轴始终可以完全显示在屏幕上,但另一个轴可能会缩小屏幕。
取自,http://www.cocos2d-x.org/wiki/Detailed_explanation_of_Cocos2d-x_Multi-resolution_adaptation