如何在webgl中设置时间统一

时间:2017-07-16 18:02:14

标签: webgl

我是webgl的新手。我正在尝试设置时间统一,所以我可以随着时间的推移更改片段着色器的输出。我认为实施起来相当简单,但我很挣扎。我知道可能涉及这两种方法:

是否需要某种渲染循环?

非常感谢这里的任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

这是我目前的解决方案......

在我的webgl JS文件中,我创建了一个时间统一,然后使用更新的值设置每个动画帧。

// create time uniform
var timeLocation = context.getUniformLocation(program, "u_time"); 

function renderLoop(timeStamp) { 

  // set time uniform
  gl.uniform1f(timeLocation, timeStamp/1000.0);

  gl.drawArrays(...);

  // recursive invocation
  window.requestAnimationFrame(renderLoop);
}

// start the loop
window.requestAnimationFrame(renderLoop);

然后在我的片段着色器中:

precision mediump float;

uniform float u_time;

void main() {
   gl_FragColor = vec4(abs(sin(u_time)),0.0,0.0,1.0);
}