我想将一个MTLTexture
对象设置为场景的环境贴图,因为根据文档,这似乎是可能的。我可以使用以下代码将环境贴图设置为UIImage
:
let roomImage = UIImage(named: "room")
scene.lightingEnvironment.contents = roomImage
这样做是有效的,我可以看到我的金属物体上反射出图像。我尝试将图像转换为 MTLTexture
并使用以下代码将其设置为环境贴图:
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
设置为nil
,而是尝试使用MTKTextureLoader.Option.textureUsage
关键字和它可能获得的每个可能的值,但这也没有起作用。
编辑:您可以查看此存储库中的示例项目,并使用它来重现此用例。
envMap
是否包含非nil
值?如果你在加载行之后设置断点,能否在Xcode中快速查看它(可视化检查其内容)? - warrenmenvMap
似乎已经成功创建,快速查看显示与roomImage
相同的图像。 - halileohalilei