如何解决使用gradientColors从GKNoise创建SKTexture时,颜色“对NSColor Generic Gray Gamma无效”
此基本代码在我尝试添加 gradientColors
之前一直有效:
let noise = GKNoise(src)
noise.gradientColors = [ 0.0: NSColor.blue,0.5: NSColor.green,0.75: NSColor.white]
let map = GKNoiseMap(noise,size: vector_double2(x: inParams.noiseSize,y: inParams.noiseSize),origin: vector_double2(x:0,y:0),sampleCount: vector_int2(x: Int32(inParams.size),y:Int32(inParams.size)),seamless: true)
let tex = SKTexture(noiseMap: map)
此时我在 Xcode 控制台中得到以下内容,在创建 SKTexture
时:
*** -getRed:green:blue:alpha: not valid for the NSColor Generic Gray Gamma 2.2 Profile colorspace 1 1; need to first convert colorspace.
其他人似乎能够做到这一点,所以我不确定我在做什么不同。我不知道在哪里可以设置色彩空间。
macOS 11.3、Xcode 12.5、SwiftUI 应用。
解决方法
GameplayKit 在幕后对您的每个 getRed(_:green:blue:alpha:)
实例调用 NSColor
,并且根据 documentation,此方法仅适用于 calibratedRGB
或 { {1}} 个颜色空间(尽管它似乎也适用于其他空间,例如 deviceRGB
)。
sRGB
和 NSColor.blue
默认使用 NSColor.green
,但 sRGB
使用 .white
。转换:
NSColorSpace.genericGray
或者,直接使用其组件实例化颜色,例如let white = NSColor.white.usingColorSpace(.sRGB)!
,将其放入 sRGB。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。