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

标签 scenekit metal

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

最佳答案

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

[material setProgram:program];

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

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

关于scenekit - 如何使用 SCNProgram 将纹理传递给 Metal 的片段着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107771/

相关文章:

ios - Scenekit 性能缓慢

ios - 指针(内存)在 Swift 中对齐到 16K 以创建 Metal 缓冲区

Swift:将 int 元组转换为包含 float 向量的自定义类型

ios - 如何从 vector_float2 中提取单个值

ios - 我需要随机的几何形状、 Material 或其他东西吗? - 场景套件, swift

ios - 旋转我的 SceneKit Material

ios - 如何将 Wavefront OBJ 文件转换为具有模型 I/O 的 SCNNode

macos - Metal - 我不能使用单个缓冲区绘制超过 2048 个点

c++ - newComputePipelineStateWithFunction 失败

ios - 当图像改变大小时 MTKView 显示 CIImage 出错