如何使用SCNProgram将纹理传递给Metal的片段着色器?

时间:2016-01-30 22:10:03

标签: scenekit metal

将SCNProgram与Metal一起使用时,我们如何将纹理传递给片段着色器?我们使用SCNProgram的handleBindingOfBufferNamed吗?如果是这样,有人可以举例说明如何?谢谢,

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用SCNMaterialProperty。在设置自定义程序对象的同一SCNMaterial上,可以使用键值编码按参数名称设置片段纹理的值:

[material setProgram:program];

SCNMaterialProperty *materialProperty = [SCNMaterialProperty materialPropertyWithContents:image];
[material setValue:materialProperty forKey:@"fragmentTextureName"];

image可以是NSImageUIImage,具体取决于您的平台。图像将作为纹理与相应的参数名称绑定,您可以在自定义片段函数中读取或采样。