1

我有一个 RGB 组件完全是白色的图像,具有不同的 alpha - 例如,RGBA 格式的 0xFFFFFF09。但是,当我使用 UIImage 或 CGImage API 加载此图像,然后在 CGBitmapContext 中绘制它时,它会出现灰度,RGB 组件设置为 alpha 的值——所以在我上面的示例中,像素会出现0x09090909 而不是 0xFFFFFF09。因此,应该是白色的图像,具有不同的透明度,实际上是黑色的,具有透明度。我正在加载的 PNG 文件没有任何问题——各种图形程序都可以正确显示它。

我想知道这是否与我使用 kCGImageAlphaPremultipliedFirst 有关,但我无法尝试它,因为 CGBitmapContextCreate 因其他值而失败。

这里的最终目的是获取可以使用 glTexImage2D 上传到纹理的像素数据。我可以使用 libPNG 完全绕过 iOS API,但还有其他建议吗?非常感谢。

4

1 回答 1

0

alpha 为 x 的黑色背景上的白色是所有分量中对应于 x 的灰度值。这就是乘法混合的工作原理。

于 2011-08-17T18:57:49.713 回答