OpenGL ES 2.0 dokusu olarak kullanılacak bir RGBA8 resmi oluşturmaya çalışıyorum.Çekirdek Grafikte bir RGBA görüntüsü nasıl oluşturulur?
+(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;
}
Ne yazık ki, CGColorSpaceCreateDeviceRGBA
var ve şu hatayla CGColorSpaceCreateDeviceRGB
sonuçları:
CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component color space; kCGImageAlphaLast; 448 bytes/row.
ben OpenGL burada istediği doğru RGBA8 biçimi oluşturmak için ne eksik?
Güncelleme: Ben yanlışlıkla denedim çeşitli varyasyonları biridir kCGImageAlphaLast
için (ben kod yapıştırılan kopya zaman olduğu) kCGImageAlphaNone
den CGBitmapContextCreate
son parametre değiştirdi.
Güncelleme 2: İçerik UIGraphicsBeginImageContext()
oluşturulmamış ise UIGraphicsGetImageFromCurrentImageContext()
döner nil, nedenle farklı bir görüntü elde etmek için gerekli olan: [UIImage imageWithCGImage:CGBitmapContextCreateImage(contextRef)]
.
Bu cevap çok yerinde, 90 hesaplar. :) –
Bunu da denedim; Ne yazık ki aynı (ish) hatası alıyorum: "CGBitmapContextCreate: desteklenmeyen parametre birleşimi: 8 tamsayı bit/bileşen; 32 bit/piksel; 3 bileşenli renk alanı; kCGImageAlphaLast; 448 bayt/satır." –
Sorunun, hatanın hala kCGImageAlphaLast ile gerçekleştiğini göstermek için güncelledim. –