//! ccResolutionType
typedef enum
{
//! Unknonw resolution type
kCCResolutionUnknown,
#ifdef __CC_PLATFORM_IOS
//! iPhone resolution type
kCCResolutioniPhone,
//! RetinaDisplay resolution type
kCCResolutioniPhoneRetinaDisplay,
//! iphone5 resolution type
kCCResolutioniPhone5Display,
//! iPad resolution type
kCCResolutioniPad,
//! iPad Retina Display resolution type
kCCResolutioniPadRetinaDisplay,
#elif defined(__CC_PLATFORM_MAC)
//! Mac resolution type
kCCResolutionMac,
//! Mac RetinaDisplay resolution type (???)
kCCResolutionMacRetinaDisplay,
#endif // platform
} ccResolutionType;
resolutionType 的可能值。
所以基于设备类型,iPhone 或 iPhone 视网膜(3.5/4 英寸)、iPad、iPad 视网膜。分辨率类型的值会有所不同。
- (id) initWithCGImage:(CGImageRef)cgImage resolutionType:(ccResolutionType)resolution
你可以像这样构建一个 CGImageRef :
UIImage *someImage = [UIImage imageNamed:@"someImage.png"];
CGImageRef someImageRef = someImage.CGImage;
你可以像这样检查你的设备类型
-(ccResolutionType)resolutionType{
static NSInteger ret=-1;
if (ret != -1) return ret;
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
if( CC_CONTENT_SCALE_FACTOR() == 2 )
ret = kCCResolutioniPadRetinaDisplay;
else
ret = kCCResolutioniPad;
}
else
{
if( CC_CONTENT_SCALE_FACTOR() == 2 ){
BOOL isWideScreenEnabled = (BOOL)(fabs((double)[UIScreen mainScreen].bounds.size.height -
(double)568) < DBL_EPSILON);
if (isWideScreenEnabled) {
ret = kCCResolutioniPhone5Display;
}
else ret = kCCResolutioniPhoneRetinaDisplay;
}
else
ret = kCCResolutioniPhone;
}
if(ret == -1)
ret = kCCResolutionUnknown;
return ret;
}
所以,总的来说,如果你想从 UIImage 创建一个 CCTexture 那么
UIImage *someImage = [UIImage imageNamed:@"someImage.png"];
CGImageRef someImageRef = someImage.CGImage;
CCTexture2D *tex = [[CCTexture2D alloc] initWithCGImage:someImageRef resolutionType:kCCResolutionUnknown ];
或者
CCTexture2D *tex = [[CCTexture2D alloc] initWithCGImage:someImageRef resolutionType:[self resolutionType]];