#webgl
Вопрос:
Я загрузил координаты 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);
}
Комментарии:
1. вы создаете и привязываете буфер для позиций вершин, но не для цветов.