I’m trying to setup a FBO with only a depth texture attached but I always end up with GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER from glCheckFramebufferStatus. As far as I understand the fbo arb extension it should be alright having only a depth attachment if gldrawbuffer is set to none. I’m probably missing something very simple but i don’t see it. If I attach a colorbuffer everything works as expected. Here’s the code:
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);
unsigned int texID;
unsigned int fboID;
int depthBufferDim = 128;
glGenFramebuffers(1, &fboID);
glBindFramebuffer(GL_FRAMEBUFFER, fboID);
glGenTextures(1, &texID);
glBindTexture(GL_TEXTURE_2D, texID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, depthBufferDim, depthBufferDim, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_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);
glBindTexture(GL_TEXTURE_2D, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texID, 0);
GLuint st = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(st){
case GL_FRAMEBUFFER_COMPLETE:
std::cout << "GL_FRAMEBUFFER_COMPLETE" <<std::endl;
break;
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
std::cout << "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT" <<std::endl;
break;
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT :
std::cout << "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" <<std::endl;
break;
case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
std::cout << "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER" <<std::endl;
break;
case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
std::cout << "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER" <<std::endl;
break;
case GL_FRAMEBUFFER_UNSUPPORTED:
std::cout << "GL_FRAMEBUFFER_UNSUPPORTED" <<std::endl;
break;
case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
std::cout << "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE" <<std::endl;
break;
case GL_FRAMEBUFFER_UNDEFINED :
std::cout << "GL_FRAMEBUFFER_UNDEFINED" <<std::endl;
break;
}
I’m using latest AMD drivers, I have that issue on Windows and Linux. Can’t test it on another video card.