在我的主要功能,我有以下代码绘制三点:为什么我不能在WebGL中延迟我的gl.drawArrays函数?
工作:
for (var i = 0; i < 3; i++) {
gl.vertexAttrib3f(vPosition, vertices[i * 2], vertices[i * 2 + 1], 0.0);
gl.drawArrays(gl.POINTS, 1, 1);
}
这从顶点数组绘制三个点。
现在,当我使用几乎相同的代码,但setTimeout
延迟循环(以便每个点将相隔3秒),没有任何东西被绘制。我已经输入console.log
并检查循环确实正在运行,只是没有任何东西正在绘制。
不工作:
for (var i = 0; i < 3; i++) {
setTimeout (function() {
gl.vertexAttrib3f(vPosition, vertices[i], vertices[i + 1], 0.0);
gl.drawArrays(gl.POINTS, i, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
}, 3000 * i);
}
知道为什么这是行不通的?
删除'gl.clear'只是给了我'GL_INVALID_OPERATION:调用glDrawArrays:试图访问超出范围的顶点的属性0' – Startec