Я экспериментирую с WebGL, и мне кажется, что я упустил что-то очень простое, но все еще не могу найти в документах и примерах, что именно.Итак, представьте, что я хочу нарисовать прямоугольник, сделайте что-то вроде этого:
let points = rectangle(20, 20, 100, 100)
gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, convertFloat32(points), WebGLRenderingContext.STATIC_DRAW)
gl.drawArrays(WebGLRenderingContext.LINE_STRIP, 0, points.length)
Это работает.Я вижу нарисованный прямоугольник, который не может быть счастливее.То же самое касается рисования столько прямоугольников, сколько я хочу.
Однако всякий раз, когда я пытаюсь добавить что-то вроде этого:
window.setTimeout(function() {
let points = rectangle(120, 120, 100, 100)
gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, convertFloat32(points), WebGLRenderingContext.STATIC_DRAW)
gl.drawArrays(WebGLRenderingContext.LINE_STRIP, 0, points.length)
}, 1000);
или, скажем, для рисования прямоугольников в каком-либо обработчике событий DOM, все ранее нарисованное стирается, и яПонятия не имею почему.
Мой вопрос был бы - что я пропустил точно?
UPD: я раздвоил какой-то существующий пример и изменил его, чтобы иметь (своего рода) минимальный пример того, о чем я говорю- https://codepen.io/shabunc/pen/YRgzJq?editors=1010