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

时间:2017-11-20 17:07:50

标签: javascript webgl p5.js

当我尝试运行下面的代码时,弹出以下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();
    }
}

1 个答案:

答案 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),以查看您正在绘制的内容。

是的,将来请尝试将问题缩小到MCVE。在提出一个小例子的过程中,您经常会自己解决问题,例如在这种情况下将问题缩小到noFill()调用。祝你好运。