使用Metal顶点和片段着色器将MTLTexture传递给SCNProgram

5
我有一组图像,我需要根据顶点随机选择其中一张图像,在使用MTLTexture2DArray时可以实现这一目标。
但是我正在使用SceneKit和自定义SCNProgram,问题在于我无法将MTLTexture传递到Metal片段函数中。
如果我将图像设置为SCNMaterial,则可以正常工作,但如果我设置为Metal纹理,则会引发异常。
let material = SCNMaterial()
material.program = program
material.setValue(metalTexture, forKey: "customTexture")

这个问题与此问题完全相同:Passing Metal texture2d_array to SceneKit shader modifier,但是它使用了着色器修改器,而我在这里使用的是自定义着色器。
是否有可能将Metal的纹理二维数组传递到自定义的SCNProgram中,或者是否有另一种方法可以将图像数组传递到SCNProgram中的着色器函数中?
1个回答

3

将金属质感包装在SCNMaterialProperty对象中会起作用。

let imageProperty = SCNMaterialProperty(contents: metalTexture)
material.setValue(imageProperty, forKey: "customTexture")

非常有用,还适用于立方体贴图。 - ZAY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接