對於我的iPhone 3D應用程序,我正在使用CoreGraphics加載具有預乘alpha的png文件。這裏是要領:iPhone上的CoreGraphics。加載預乘alpha的PNG文件的正確方法是什麼?
// load a 4-channel rgba png file with pre-multiplied alpha.
CGContextRef context =
CGBitmapContextCreate(data, width, height, 8, num_channels * width, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
// Draw the image into the context
CGRect rect = CGRectMake(0, 0, width, height);
CGContextDrawImage(context, rect, image);
CGContextRelease(context);
然後,我繼續並使用數據作爲OpenGL中的紋理。
我的問題:通過指定預倍乘α - kCGImageAlphaPremultipliedLast - 我是 - 無意中 - 告訴CoreGraphics乘以α或rgb通道 - 我所假設的 - 我只是表明傳入圖像的格式已預先乘以alpha?
感謝, 道格
感謝彼得。我更喜歡pre-mult,因爲我是Porter/Duff(pre-mult approach的發明者)奉獻者。不幸的是OpenGL是* not * premult,所以我需要自己處理。乾杯。 – dugla 2010-03-29 14:50:45