首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSColor从GKNoise创建SKTexture时,颜色“对GKNoise通用灰度伽玛无效”

使用NSColor从GKNoise创建SKTexture时,颜色“对GKNoise通用灰度伽玛无效”
EN

Stack Overflow用户
提问于 2021-04-29 17:28:37
回答 1查看 117关注 0票数 1

在我尝试添加gradientColors之前,这段基本代码一直有效

代码语言:javascript
复制
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)

在创建SKTexture时,我在Xcode控制台中得到以下内容

代码语言:javascript
复制
*** -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、Xcode12.5、SwiftUI应用。

EN

回答 1

Stack Overflow用户

发布于 2021-05-18 18:21:45

GameplayKit在幕后对每个NSColor实例调用getRed(_:green:blue:alpha:),根据documentation的说法,此方法仅适用于calibratedRGBdeviceRGB色彩空间中的颜色(尽管它似乎也适用于其他空间,如sRGB)。

默认情况下,NSColor.blueNSColor.green使用sRGB,但.white使用NSColorSpace.genericGray。要转换,请执行以下操作:

代码语言:javascript
复制
let white = NSColor.white.usingColorSpace(.sRGB)!

或者,直接用它的组件实例化一个颜色,例如NSColor(red: 1, green: 1, blue: 1, alpha: 1),将它放在sRGB中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67314642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档