当将 SCNProgram 与 Metal 一起使用时,我们如何将纹理传递给片段着色器?我们使用SCNProgram的handleBindingOfBufferNamed吗?如果是这样,有人可以提供一个例子吗?谢谢,
最佳答案
最简单的方法是使用 SCNMaterialProperty
。在设置自定义程序对象的同一 SCNMaterial
上,您可以使用键值编码按参数名称设置片段纹理的值:
[material setProgram:program];
SCNMaterialProperty *materialProperty = [SCNMaterialProperty materialPropertyWithContents:image];
[material setValue:materialProperty forKey:@"fragmentTextureName"];
image
可以是 NSImage
或 UIImage
,具体取决于您的平台。图像将被绑定(bind)为具有相应参数名称的纹理,您可以在自定义片段函数中读取或采样。
关于scenekit - 如何使用 SCNProgram 将纹理传递给 Metal 的片段着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107771/