当我 运行 此代码出现以下错误:

When I run this code the following errors appear:

当我尝试 运行 下面的代码时,会弹出以下 2 个错误:

WebGL: INVALID_VALUE: vertexAttribPointer: index out of range

WebGL: INVALID_VALUE: enableVertexAttribArray: index out of range

代码有什么问题,我应该如何解决?

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();
    }
}

你应该养成用谷歌搜索你的错误的习惯。谷歌搜索 WebGL: INVALID_VALUE: enableVertexAttribArray: index out of range returns 一大堆结果,包括这个:beginShape should not require call to fill() in order to render

基本上,这是在告诉您您没有填充颜色,因此您将看不到正在绘制的内容。将 noFill() 行更改为 fill(255, 0, 0) 之类的内容以查看您正在绘制的内容。

顺便说一句,以后请尝试将您的问题缩小到 MCVE。在提出一个小示例的过程中,您通常会自己找出问题所在,例如在本例中将问题缩小到 noFill() 调用。祝你好运。