【发布时间】:2017-01-17 00:30:57
【问题描述】:
我正在尝试将GLKVector4 传递给应该将其作为vec4 接收的着色器。我正在使用片段着色器修改器:
material.shaderModifiers = [ SCNShaderModifierEntryPoint.fragment: shaderModifier ]
shaderModifier 在哪里:
// color changes
uniform float colorModifier;
uniform vec4 colorOffset;
vec4 color = _output.color;
color = color + colorOffset;
color = color + vec4(0.0, colorModifier, 0.0, 0.0);
_output.color = color;
(我只是添加了一个颜色偏移)我试过了:
material.setValue(GLKVector4(v: (250.0, 0.0, 0.0, 0.0)), "colorOffset")
这不起作用(没有添加偏移,着色器使用默认值,即 (0, 0, 0, 0))。如果我将GLKVector4 替换为SCNVector4,也会发生同样的情况
关注this我也试过了:
let points: [float2] = [float2(250.0), float2(0.0), float2(0.0), float2(0.0)]
material.setValue(NSData(bytes: points, length: points.count * sizeof(float2)), "colorOffset")
但是,我可以通过以下方式轻松地将浮点值传递给统一 colorModifier:
material.setValue(250.0, forKey: "colorModifier")
这将增加绿色通道作为例外
【问题讨论】: