标签: mtlbuffer

使用MTLTexture作为SCNScene的环境映射

我想将一个MTLTexture对象设置为一个场景的环境贴图,因为根据文档似乎是可能的.我可以UIImage使用以下代码将环境贴图设置为a :

let roomImage = UIImage(named: "room")
scene.lightingEnvironment.contents = roomImage
Run Code Online (Sandbox Code Playgroud)

这很有效,我看到了金属物体上图像的反射.我尝试将图像转换为a 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
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,我最终得到一个空白的环境贴图,没有反射我的对象.

另外,我没有设置optionsas nil,而是尝试MTKTextureLoader.Option.textureUsage使用它可以获得的每个可能值来设置密钥,但这也不起作用.

编辑:您可以查看仓库中的示例项目,并使用它来重现此用例.

ios scenekit swift metal mtlbuffer

17
推荐指数
1
解决办法
511
查看次数

当应用程序进入前台时,是否需要重新创建 MTLBuffer、MTLTexture 或其他金属资源?

我正在重构cocos2d-x的渲染层,新引擎将在iOS. 在原始版本中,当应用程序在后台停留很长时间后进入前台时,cocos2dx 会重新创建所有缓冲区和纹理。

我是 Metal 新手,我的问题是:是否有必要将 MTLBuffer、MTLTexture 和其他 Metal 资源重新创建为 GLES?

ios metal mtlbuffer

1
推荐指数
1
解决办法
169
查看次数

标签 统计

ios ×2

metal ×2

mtlbuffer ×2

scenekit ×1

swift ×1