我正在尝试从文本生成RGBA8图像以用作OpenGL ES 2.0纹理.
+(UIImage *)imageFromText:(NSString *)text
{
UIFont *font = [UIFont systemFontOfSize:20.0];
CGSize size = [text sizeWithFont:font];
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef contextRef = CGBitmapContextCreate (NULL,
size.width, size.height,
8, 4*size.width,
colorSpace,
kCGImageAlphaLast
);
CGColorSpaceRelease(colorSpace);
UIGraphicsPushContext(contextRef);
[text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsPopContext();
return image;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有CGColorSpaceCreateDeviceRGBA,CGColorSpaceCreateDeviceRGB导致以下错误:
CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component color space; kCGImageAlphaLast; 448 bytes/row.
Run Code Online (Sandbox Code Playgroud)
我缺少什么来创建OpenGL想要的正确RGBA8格式?
更新:我更改了CGBitmapContextCreatefrom 的最后一个参数kCGImageAlphaNone(当我复制粘贴代码时)kCGImageAlphaLast,这是我错误尝试的几种变体之一.
更新2:UIGraphicsGetImageFromCurrentImageContext() …