Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 增加SKShader中的“一致”值_Ios_Swift_Xcode_Shader - Fatal编程技术网

Ios 增加SKShader中的“一致”值

Ios 增加SKShader中的“一致”值,ios,swift,xcode,shader,Ios,Swift,Xcode,Shader,在SpriteKit节点上,我运行片段着色器(SKShader)来显示动画(canvasNode.fillShader=shader) 在某个时刻,我想增加一个统一参数(transitionProgress,介于0和1之间),以更改动画阶段 目前,我只是将其从0设置为1 shader.uniforms = [ SKUniform(name: "u_transitionProgress", float: 1) ] 然而,我更希望在这些值之间有一个平滑的过渡(比如线性增加,0,0.001,

在SpriteKit节点上,我运行片段着色器(SKShader)来显示动画(
canvasNode.fillShader=shader

在某个时刻,我想增加一个统一参数(
transitionProgress
,介于0和1之间),以更改动画阶段

目前,我只是将其从0设置为1

shader.uniforms = [
    SKUniform(name: "u_transitionProgress", float: 1)
]
然而,我更希望在这些值之间有一个平滑的过渡(比如线性增加,0,0.001,0.002,…,0.999,1)

既然我不能在着色器中存储任何可以在每次执行时增加的值,那么实现该效果的最佳方法是什么?(或者,只有这样才能一次又一次地执行上面的行,并略微增加值?

表示着色器接收到此一致性:

浮动u_时间;|均匀|模拟中经过的时间

所以用它来驱动动画


经过的时间被传递到
SKScene
update
方法。以名为
u\u transitionStartTime
的统一格式将其传递给着色器。然后,您可以使用
u\u time
u\u transitionStartTime
(如果需要,还可以使用另一个统一的转换结束时间或转换持续时间)计算转换进度。

这听起来像是
更新:
接收
CACurrentMediaTime()
而不是从模拟开始以来的时间(不管是什么)。在第一次调用
update:
时,您应该节省时间。然后在后续调用中,您可以减去第一次调用的时间以获得“模拟中经过的时间”。