gpt4 book ai didi

iphone - 混合颜色空间有惩罚吗? (核心显卡)

转载 作者:行者123 更新时间:2023-12-03 18:59:03 25 4
gpt4 key购买 nike

如果我在 Mac OS X 或 iPhone OS 上的 Core Graphics 中编写绘图代码,我可以通过调用以下命令将事件填充颜色设置为红色:

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); // RGB(1,0,0)

如果我想要 50% 的灰度,我可以调用:

CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1.0); // RGB(0.5,0.5,0.5)

但是对于灰色阴影,很容易制作较短的线路并调用:

CGContextSetGrayFillColor(context, 0.5, 1.0);

但是,这个函数并不是简单地调用 RGB 方法并将强度值复制 3 次;相反,它将上下文的颜色空间从 DeviceRGB 更改为 DeviceGray。下次调用 RGB 方法会将其切换回来。

我很想知道:

  • 切换色彩空间会带来什么损失?
  • 当上下文的色彩空间与设备的原生色彩空间不匹配时,绘图是否会受到影响? (即,使用 DeviceGray 与 DeviceRGB 进行绘制)

我问这个问题是出于技术上的好奇心,而不是过早优化的愿望,所以请尽量减少你的警告。

最佳答案

从概念上讲,这是有惩罚的,但实际上它很小,以至于无关紧要;即使使用自定义颜色空间,将(例如)灰色阴影转换为 RGB 三元组(加上 alpha)也是微不足道的算术。

但是,当您绘制图像时,颜色空间确实会受到影响,因为它不仅仅是单个转换操作的问题。每个像素都必须进行转换,虽然可以在此处进行优化(例如 CLUT、颜色查找表,如果源图像使用索引颜色,则非常有用),但它们在您还发现的情况下往往没有用处。 quartz 代码。

你说你期待CGContextSetGrayFillColor()更改图形上下文的颜色空间,但实际情况并非如此。这样做需要转换该图形上下文的内容以匹配上下文的新颜色空间。由于转换颜色而不是上下文的缓冲区要便宜得多且简单得多(例如,通过将 CGContextSetGrayFillColor() 制作为 CGContextSetRGBFillColor() 的幕后包装器),因此在任何明智的实现中都将避免这种费用。 p>

关于iphone - 混合颜色空间有惩罚吗? (核心显卡),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com