Я читал знаменитое руководство по webgl https://webgl2fundamentals.org/webgl и изучал, как использовать bufferData
для помещения данных в буфер.Учебное пособие использует bufferData
в такой форме, как эта
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
второй параметр здесь - это фактический массив или данные, которые мы хотим отправить в буфер на GPU.Однако я столкнулся с этим новым использованием API сегодня.
gl.bufferData(gl.ARRAY_BUFFER, 8*maxNumVertices, gl.STATIC_DRAW);
Здесь второй параметр указывает размер буфера.
Так что меня это смутило.Я посмотрел этот API на MDN https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData и там написано
// WebGL1:
void gl.bufferData(target, size, usage);
void gl.bufferData(target, ArrayBuffer? srcData, usage);
void gl.bufferData(target, ArrayBufferView srcData, usage);
// WebGL2:
void gl.bufferData(target, ArrayBufferView srcData, usage, srcOffset, length);
Значит ли это для webgl1.0, мы можем либо передать фактический массив данных, либо размер буфера вAPI как второй параметр.Однако для WebGL2.0 мы можем только передать фактический массив данных в API?
Я до сих пор не уверен в этом.Пожалуйста, помогите.