I have 2 framebuffers and they work well individually, but if I try to use them sequentially, draws black screen.
framebuffer creation function:
int nomObr = postObrabotchiki.PolychitRazmer();
postObrabotchiki += PostObrabotchik();
postObrabotchiki[nomObr].shader = ZagryzchikSohranshik::ZagryzitISozdatShaderProgramy(pytVersh, pytFrag, pytGeom);
glUseProgram(postObrabotchiki[nomObr].shader);
glUniform1i(glGetUniformLocation(postObrabotchiki[nomObr].shader, "ekran"), 0);
glGenFramebuffers(1, &postObrabotchiki[nomObr].id);
glBindFramebuffer(GL_FRAMEBUFFER, postObrabotchiki[nomObr].id);
int shirina, visota;
glfwGetFramebufferSize(Igra::PolychitOkno(), &shirina, &visota);
glGenTextures(1, &postObrabotchiki[nomObr].kartinkaEkrana);
glBindTexture(GL_TEXTURE_2D, postObrabotchiki[nomObr].kartinkaEkrana);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, shirina, visota, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, postObrabotchiki[nomObr].kartinkaEkrana, 0);
unsigned int RBO;
glGenRenderbuffers(1, &RBO);
glBindRenderbuffer(GL_RENDERBUFFER, RBO);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, shirina, visota);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, RBO);
auto fboSost = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (fboSost != GL_FRAMEBUFFER_COMPLETE)
return;
glBindFramebuffer(GL_FRAMEBUFFER, 0);
The framebuffer usage function:
glBindFramebuffer(GL_FRAMEBUFFER, postObrabotchiki[0].id);
*draw model*
glBindFramebuffer(GL_FRAMEBUFFER, postObrabotchiki[1].id);
glUseProgram(postObrabotchiki[0].shader);
glBindVertexArray(ekranVAO);
glBindTexture(GL_TEXTURE_2D, postObrabotchiki[0].kartinkaEkrana);
glDrawArrays(GL_TRIANGLES, 0, 6);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glUseProgram(postObrabotchiki[1].shader);
glBindVertexArray(ekranVAO);
glBindTexture(GL_TEXTURE_2D, postObrabotchiki[1].kartinkaEkrana);
glDrawArrays(GL_TRIANGLES, 0, 6);
How to use more than 1 framebuffer correctly?