macos - 从 GKNoise 使用 gradientColors 创建 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
calibratedRGB
deviceRGB
sRGB
NSColor.blue
并默认NSColor.green
使用sRGB
,但.white
使用NSColorSpace.genericGray
. 转换:
let white = NSColor.white.usingColorSpace(.sRGB)!
或者,直接使用其组件实例化颜色,例如NSColor(red: 1, green: 1, blue: 1, alpha: 1)
,将其放入 sRGB。
推荐阅读
- python - 查找第一个非零值并计算其后的列
- spring - 如何在spring-boot中使用@RequestBody保存子字段?
- ghost-blog - Ghost:重新启动时出现无效的 ghost-cli 版本错误消息
- jquery - 如何通过 AJAX 延迟 document.location.href 重定向
- rundeck - Rundeck ACL 适用于一个 AD 组,但不适用于另一个 AD 组
- azure-devops - 发生一个或多个错误时如何调试 Azure DevOps 任务 PublishPipelineArtifact
- visual-studio - 将 x64 添加到我的项目后未包含 Windows GDI 库
- php - 如何从 wordpress 帖子中删除自定义字段?
- swift - 使用正则表达式将连字符插入长度受限的字符串中
- python - 根据其他列条件更新列