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