我正在将存储在磁盘上的TIFF中的图像数据加载到缓冲区中,随后我将其用于创建OpenGL纹理。我通过写CGContext
来获取数据。原始图像在每个像素上都是100%白色。从一个像素到下一个像素的唯一变化是alpha值。
当我写入CGContext
时,不会保留透明像素的颜色。 “你问为什么要关心透明像素的颜色?”缩放图像时,透明像素的颜色会变得可见,从而产生难看的黑色轮廓伪影。
我尝试直接从CGImage
读取数据到缓冲区并使用该缓冲区创建纹理(使用CGImageGetDataProvider(image)
),但这仅适用于颜色空间为CGImage是RGBA。据推测,CGContextDrawimage
处理从一个颜色空间转换到另一个颜色空间。
我有什么方法可以告诉CGContextDrawimage
保留透明像素的颜色?或者我将不得不以其他方式加载我的图像?