我认为无论是多次引用实例的outputImage
还是实例化新过滤器,CIFilter(name: "CIRandomGenerator")
的输出始终相同:
import CoreImage
let randomFilter = CIFilter(name: "CIRandomGenerator")
let outputImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
let outputImage2 = randomFilter!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
// pause for some amount of time so that it's definitely not
// instantiating a PRNG with the same timestamp
let rf2 = CIFilter(name: "CIRandomGenerator")
rf2!.outputImage!.cropped(to: (CGRect(x: 0, y: 0, width: 100, height: 100)))
导致结果如下:
![playground output](https://istack.dev59.com/p3jGr.webp)
我没有看到任何可以传递以正确初始化伪随机数生成器的种子参数。
由于CIFilter具有无限的范围,在调用“裁剪”时可以随机偏移位置,这似乎可以正常工作,但这似乎是一种hack方法。我是否遗漏了初始化/“getNext”此随机过滤器的正确方法?