0

我已经将 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);
}
4

0 回答 0