如何在webgl中设置时间统一

如何在webgl中设置时间统一,webgl,Webgl,我是webgl的新手。我正在尝试设置时间统一,以便随着时间的推移更改片段着色器的输出。我认为这将是相当简单的实施,但我正在努力。我知道可能涉及这两种方法: 是否需要某种渲染循环 非常感谢您的帮助。这是我目前的解决方案 在我的webgl JS文件中,我创建了一个时间统一,然后在每个动画帧中设置一个更新的值 // create time uniform var timeLocation = context.getUniformLocation(program, "u_time"); fu

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

是否需要某种渲染循环


非常感谢您的帮助。

这是我目前的解决方案

在我的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);
}

@Rabbi76谢谢-请参阅下面我的当前解决方案:将时间传递给回调。换句话说,您不需要
var=performance.now()
只需使用
函数renderLoop(now){
您也不需要
timeStart
。传递到
requestAnimationFrame
的时间始终从0开始