我已经将 2 个形状的坐标上传到一个数组中,并试图让它们加载到一个 GLSL 项目中。每次我尝试运行代码时,都会收到错误消息“启用的顶点数组没有缓冲区”。你能看看下面的代码并告诉我我做错了什么吗?该数组称为几何。
vertexShaderCode = `
precision highp float;
attribute vec3 position;
attribute vec3 color;
varying vec3 fragColor;
void main(void)
{
gl_Position = vec4(position,1.0);
fragColor = color;
}
fragmentShaderCode = `
precision highp float;
// Uniform variables are constant over image
uniform float time;
uniform vec2 viewport;
varying vec3 fragColor;
void main()
{
gl_FragColor = vec4(fragColor, 1.);
}
vertexBuffer = {
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(
gl.ARRAY_BUFFER,
geometry,
gl.STATIC_DRAW
);
invalidation.then(() => gl.deleteBuffer(buffer));
return buffer;
}
{
const FLOAT_SIZE = Float32Array.BYTES_PER_ELEMENT;
const positions = gl.getAttribLocation(program, "position");
gl.vertexAttribPointer(positions, 2, gl.FLOAT, false, FLOAT_SIZE * 5, 0);
gl.enableVertexAttribArray(positions);
const colors = gl.getAttribLocation(program, "color");
gl.vertexAttribPointer(colors, 3, gl.FLOAT, false, FLOAT_SIZE * 5, 2);
gl.enableVertexAttribArray(colors);
}
function draw() {
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLES, 0, 18);
}