在我的主要功能,我有以下代碼繪製三點:爲什麼我不能在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