1 #include "nta/FrameBuffer.h"
2 #include "nta/Logger.h"
8 glGenFramebuffers(1, &
m_fbo);
12 glBindFramebuffer(GL_FRAMEBUFFER,
m_fbo);
15 if (idx >=
m_texs.size())
return;
16 glDrawBuffer(GL_COLOR_ATTACHMENT0 + idx);
17 glReadBuffer(GL_COLOR_ATTACHMENT0 + idx);
20 glDrawBuffer(GL_COLOR_ATTACHMENT0);
21 glReadBuffer(GL_COLOR_ATTACHMENT0);
22 glBindFramebuffer(GL_FRAMEBUFFER, 0);
25 GLint min_filt, GLint mag_filt,
bool rgba) {
30 glGenTextures(1, &tex);
31 glBindTexture(GL_TEXTURE_2D, tex);
33 auto format = rgba ? GL_RGBA : GL_RGB;
34 glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format,
35 GL_UNSIGNED_BYTE,
nullptr);
36 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filt);
37 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filt);
39 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 +
m_texs.size(),
40 GL_TEXTURE_2D, tex, 0);
41 glBindTexture(GL_TEXTURE_2D, 0);
45 Logger::writeToLog(
"Added texture " + std::to_string(tex) +
" associated with color attachment " + std::to_string(
m_texs.size()-1));
52 if (idx >=
m_texs.size())
return 0;
53 glBindTexture(GL_TEXTURE_2D,
m_texs[idx]);
55 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
56 glBindTexture(GL_TEXTURE_2D, 0);
60 if (idx >=
m_texs.size())
return 0;
61 glBindTexture(GL_TEXTURE_2D,
m_texs[idx]);
63 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
64 glBindTexture(GL_TEXTURE_2D, 0);
68 if (
m_fbo == 0)
return;
70 glDeleteFramebuffers(1, &
m_fbo);