Gar*_*kin 5 opengl key-value-coding vertex-shader scenekit
根据Apple的文档"要更新一次值,使用键值编码:调用setValue:forKey:方法,提供着色器源代码中的统一名称作为键,并提供适当类型的数据作为值."(取自SCNProgram类参考).
但是,我不能让这个工作.
我有一个SCNMaterial子类,设置一个新的SCNProgram实例,加载顶点和片段着色器.我一直在handleBindingOfSymbol用来设置自定义变量,例如
self.stringMaterial.handleBindingOfSymbol("waveAmplitude") {
programID, location, renderedNode, renderer in
glUniform1f(GLint(location), Float(self.amplitude))
}
Run Code Online (Sandbox Code Playgroud)
这是正常的.
为了提高效率,我希望能够使用键值编码.但是,如果我用上面的代码替换
self.stringMaterial.setValue(Float(self.amplitude), forKey: "waveAmplitude")
Run Code Online (Sandbox Code Playgroud)
着色器中的统一值为0.0.
有人对这个有经验么?(我在MacOS上这样做,但我希望它在iOS上也一样.)