Я пытаюсь перевести мой необработанный код JavaScript для обработки изображений в GLSL в webgl2, чтобы добиться увеличения производительности.просто объяснил, что это мой подход:
на кадр: 1) установить видеоизображение с камеры в качестве текстуры 2) применить некоторые эффекты в буфере первого кадра 3) установить результат в качестве текстуры для буфера второго кадра 3) применить некоторые эффекты вбуфер второго кадра 4) установить результат в качестве текстуры в буфер третьего кадра 5) применить некоторые эффекты в буфере третьего кадра ... последний шаг) установить буфер нулевого кадра и нарисовать на холсте с конечными эффектами.
примечание: эффектыпрогрессивный и основанный на готовом результате предыдущего эффекта
мой вопрос в том, что я хочу, чтобы мой фрагментный шейдер записывал в массив данных / метаданных, отличных от стандартного фрагмента outputOutput, который будет использоваться в следующем кадровом буфере для определенных операций.
Технически, я хочу, чтобы мой первый проход шейдера сохранял и массивировал, а второй проход шейдера использовал эти сохраненные значения.я ищу, какую структуру / данные / объект использовать для этого и, если возможно, как это использовать
код выглядит примерно так:
//-- Load video frame and snapshot
refresh_texture();
//-- use first buffer to draw
GL.bindFramebuffer(GL.FRAMEBUFFER, framebuffers[0]);
GL.uniform1f(_stageNumber, 0);
GL.drawElements(GL.TRIANGLES, 6, GL.UNSIGNED_SHORT, 0);
////////////////////////////////////////////////////////////////////////////////
// for the next draw, use the texture we just rendered to.
GL.bindTexture(GL.TEXTURE_2D, textures[0]);
GL.uniform1f(_stageNumber, 1);
//-- use second buffer to draw
GL.bindFramebuffer(GL.FRAMEBUFFER, framebuffers[1]);
GL.drawElements(GL.TRIANGLES, 6, GL.UNSIGNED_SHORT, 0);