【发布时间】:2012-07-30 11:05:40
【问题描述】:
我有一个用 Cocos2d-x 编写的多平台 iOS/Android 游戏。我只有一组图像可供使用(我只在高分辨率设备之后)根据设备的分辨率进行缩放。例如,所有图像都适用于 iPad,但如果您使用的是 Galaxy S,则图像位置和缩放会受到 GalaxyS_screenWidth/iPadscreenWidth 的影响。
这适用于所有 Android 设备以及 iPad、iPad2 和旧 iPhone,但对于 Retina iPhone 则存在问题。在 iPhone 4 上,我所有的图像看起来都非常像素化,这是因为图像被缩放到 iPhone 非视网膜分辨率,然后再放大以填满屏幕。
我尝试启用 Retina 模式,图像是预期大小的一半(可能是由于使用了使用点的 get winsize()),手动缩放会导致其他类型的问题。我尝试了很多选项和属性,但无济于事,那我现在该怎么办?
编辑: 这不仅仅是一个图形问题,因为文本会自动缩小然后放大并显示像素化。
编辑 2: 字体是位图,所以我不好。但我不想使用视网膜,因为默认情况下所有图像都已经是视网膜。我所有的图像都是为 iPad 设置的,所以对于 iPhone 4,我只是将它们缩小一点。这适用于 Android 手机。
比如我有一张图片,取决于通过getwinsize()获得的屏幕分辨率:
如果当前分辨率宽度为 1024,则图像保持不变。
如果当前分辨率宽度为 900,则图像将缩放 900/1024,没问题。
如果设备是 iPhone 4 分辨率宽度是 480,所以图像被缩放 480/1024,然后 cocos2d-x 自动将生成的图像缩放 2 从而像素化。我尝试使用getwinsizeinpixels,我尝试增加屏幕尺寸,我尝试了很多东西,但没有任何开箱即用的方法,除非我要重做我的许多代码。
那么问题来了,我怎么能让该死的引擎把 iPhone 4 当作一部分辨率为 960x640 的 Android 手机呢?
【问题讨论】:
-
您将视网膜版本的图形命名为什么?
-
没有,只有我的问题中所述的一组图形。问题不仅仅存在于图形中,因为文本也会先按比例缩小然后再放大,这会导致大量像素化。
-
您必须包含视网膜版本。您如何期望它能够显示没有像素化的高分辨率版本?您的字体也可能是从位图字体而不是系统字体生成的,在这种情况下,您还需要这些字体的视网膜版本。
-
我对字体不好,默认情况下所有图像已经是视网膜,请阅读编辑 2。
标签: iphone cocos2d-iphone resolution cocos2d-x retina-display