Вы должны иметь возможность настроить рендер-буфер с текстурой, поддерживающей его, используя следующий код:
// Offscreen position framebuffer object
glGenFramebuffers(1, &positionFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, positionFramebuffer);
glGenRenderbuffers(1, &positionRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, positionRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, FBO_WIDTH, FBO_HEIGHT);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, positionRenderbuffer);
// Offscreen position framebuffer texture target
glGenTextures(1, &positionRenderTexture);
glBindTexture(GL_TEXTURE_2D, positionRenderTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, FBO_WIDTH, FBO_HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, positionRenderTexture, 0);
Переключение буферов так же просто, как использовать код, подобный следующему:
glBindFramebuffer(GL_FRAMEBUFFER, positionFramebuffer);
glViewport(0, 0, FBO_WIDTH, FBO_HEIGHT);
Затем вы можете выполнить рендеринг в этот буфер и отобразить полученную текстуру, передав ее в простой шейдер, который отображает ее в виде прямоугольного фрагмента геометрии.Эта текстура также может быть передана в шейдер, который рендерится в другой аналогичный буфер визуализации, который поддерживается текстурой и т. Д.* чтобы извлечь пиксели из этого закадрового буфера рендеринга.
В качестве примеров вы можете попробовать мои примеры приложений здесь и здесь .Первый из них выполняет обработку видеокадров с камеры, при этом одна из настроек позволяет передавать видео во время обработки в закадровом буфере рендеринга.Последний пример рендерится в текстуру карты куба в одной точке, а затем использует эту текстуру для отображения окружения на чайнике.