我正在尝试使用this post建议的DRAW帧缓冲区初始化全零的纹理。但是,我很困惑我的DRAW帧缓冲区仅在将其附加到GL_COLOR_ATTACHMENT0
时才清除:
int levels = 2; int potW = 2; int potH = 2; GLuint _potTextureName; glGenTextures(1, &_potTextureName); glBindTexture(GL_TEXTURE_2D, _potTextureName); glTexStorage2D(GL_TEXTURE_2D, levels, GL_RGBA32F, potW, potH); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _potTextureName, 0); glDrawBuffer(GL_COLOR_ATTACHMENT0); GLuint clearColor[4] = {0,0,0,0}; glClearBufferuiv(GL_COLOR, 0, clearColor);
修改代码段以使用
GL_COLOR_ATTACHMENT1
,保留所有其他内容,将不会清除帧缓冲区:
int levels = 2; int potW = 2; int potH = 2; GLuint _potTextureName; glGenTextures(1, &_potTextureName); glBindTexture(GL_TEXTURE_2D, _potTextureName); glTexStorage2D(GL_TEXTURE_2D, levels, GL_RGBA32F, potW, potH); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, _potTextureName, 0); glDrawBuffer(GL_COLOR_ATTACHMENT1); GLuint clearColor[4] = {0,0,0,0}; glClearBufferuiv(GL_COLOR, 0, clearColor);
我尝试使用
glDrawBuffers
代替建议的here,并且我也尝试使用glClearColor
和glClear
,但是它们的行为都相同。我在这里想念什么?
我正在尝试使用本文所建议的DRAW帧缓冲区初始化全零的纹理。但是,我很困惑,仅当我将DRAW帧缓冲区附加到...
事实证明,它与我以前绑定到GL_COLOR_ATTACHMENT0
的内容有关。