我想将一个对象设置为场景的环境图,因为根据文档MTLTexture
似乎是可能的。我可以使用以下代码将环境贴图设置为:UIImage
let roomImage = UIImage(named: "room")
scene.lightingEnvironment.contents = roomImage
这很有效,我看到图像在金属物体上的反射。我尝试将图像转换为 aMTLTexture
并使用以下代码将其设置为环境贴图:
let roomImage = UIImage(named: "room")
let loader = MTKTextureLoader(device: MTLCreateSystemDefaultDevice()!)
let envMap = try? loader.newTexture(cgImage: (roomImage?.cgImage)!, options: nil)
scene.lightingEnvironment.contents = envMap
但是,这不起作用,我最终得到一个空白的环境贴图,我的对象没有反射。
此外,我没有设置options
as nil
,而是尝试使用它可以获得的所有可能值MTKTextureLoader.Option.textureUsage
设置密钥,但这也不起作用。
编辑:您可以查看此repo 中的示例项目并使用它来重现此用例。