SCNProgram OpenGL着色器的键值设置自定义值

时间:2016-04-15 20:55:23

标签: opengl scenekit vertex-shader key-value-coding

根据Apple的文档“要更新一次值,请使用键值编码:调用setValue:forKey:方法,提供着色器源代码中的统一名称作为键,并提供适当类型的数据作为值。” (取自SCNProgram Class Reference)。

然而,我无法让它发挥作用。

我有一个SCNMaterial子类,设置一个新的SCNProgram实例,加载顶点和片段着色器。我一直在使用handleBindingOfSymbol设置自定义变量,例如

self.stringMaterial.handleBindingOfSymbol("waveAmplitude") {
    programID, location, renderedNode, renderer in
    glUniform1f(GLint(location), Float(self.amplitude))
}

这是正常的。

为了提高效率,我希望能够使用键值编码。但是如果我用

替换上面的代码
self.stringMaterial.setValue(Float(self.amplitude), forKey: "waveAmplitude")

着色器中的统一值为0.0。

有没有人有这方面的经验? (我在MacOS上这样做,但我希望它在iOS上也一样。)

0 个答案:

没有答案