当我尝试运行下面的代码时,弹出以下2个错误:
WebGL:INVALID_VALUE:vertexAttribPointer:index超出范围
WebGL:INVALID_VALUE:enableVertexAttribArray:index超出范围
代码有什么问题,我该怎么做才能修复它?
let cols, rows;
let h = 600;
let w = 600;
let scl = 20;
let terrain = [];
function setup() {
createCanvas(600,600,WEBGL);
background(0);
cols = w / scl;
rows = h / scl;
for (i = 0; i <= rows*cols-1; i++){
terrain[i] = random(-10,10);
}
}
function draw() {
background(0);
stroke(255);
noFill();
translate(width/2, height/2);
rotateX(PI/3);
translate(-w/2, -h/2);
for( let y = 0; y < rows; y++){
beginShape(TRIANGLE_STRIP);
for( let x = 0; x < cols; x++){
vertex(x*scl,y*scl,terrain[y+x*rows]);
vertex(x*scl,(y+1)*scl,terrain[y+1+x*rows]);
}
endShape();
}
}
答案 0 :(得分:1)
你应该养成用谷歌搜索错误的习惯。谷歌搜索WebGL: INVALID_VALUE: enableVertexAttribArray: index out of range
会返回大量结果,包括以下结果:beginShape should not require call to fill() in order to render
基本上,这告诉您没有填充颜色,因此您无法看到您正在绘制的内容。将noFill()
行改为fill(255, 0, 0)
,以查看您正在绘制的内容。
noFill()
调用。祝你好运。