当我 运行 此代码出现以下错误:
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()
调用。祝你好运。
当我尝试 运行 下面的代码时,会弹出以下 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()
调用。祝你好运。