Изначально был вопрос о получении текстуры из того, что было отрендерено. Как выход - рендерил в frame buffer. Из-за этого появилась другая проблема - нужно отрендеренное отобразить на canvas. Выход - рисовать текстуру (в которую рисуется из другого FBO) в дефолтный frame buffer.
Разумеется, потом потребовалось копировать текстуру, так как нельзя ее использовать и рисовать в нее же.
Source and destination textures of the draw are the same.
Окей,
нашел методы. Еще один фрейм буфер создавать не вариант, все таки много кода получится. Есть метод
copyTexSubImage2D() - он копирует данные из текущего frame buffer в активную текстуру. То что нужно! Получается, что потребность в FBO сразу отпадает, так как можно получить текстуру из дефолтного буфера.
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, element.width, element.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, element.width, element.height);