Recibo un error GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
después de intentar crear un framebuffer que se renderiza en una textura. No puedo entender lo que está mal, cualquier ayuda es muy apreciada.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT cuando intento adjuntar textura
Editar: ¡Solucionado! el código de trabajo:
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 768, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glGenRenderbuffers(1, &rboID);
glBindRenderbuffer(GL_RENDERBUFFER, rboID);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 768, 1024);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
glGenFramebuffers(1, &backFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, backFramebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboID);
[self checkFramebufferStatus];
glBindFramebuffer(GL_FRAMEBUFFER, 0);
Nota: Si su versión no funciona, asegúrese de comprobar si hay errores después de cada llamada y que se borre el error antes de la primera llamada, de lo contrario podrás comprobación de errores el código antes de eso.
Estaba comparando mi código con este fragmento para intentar encontrar un error. Para Android OpenGL ES 2.0 el problema para mí fue GL_DEPTH_COMPONENT vs GL_DEPTH_COMPONENT16. En glRenderBufferStorage, asegúrese de que el componente de profundidad sea GL_DEPTH_COMPONENT16. Difícil de detectar ya que cada línea de código era idéntica de lo contrario a su fragmento. – Halsafar
También debe dejar el código incorrecto, para que las personas que lo lean después puedan ver la solución. O al menos explicar lo que has marcado. De todos modos, gracias por mostrar el código fijo. – Arelius
@Halsafar Sí, es un error bastante común. Lo bueno es que lo notaste. Sin embargo, si seleccionó los errores revisados, detectaría este error mucho más rápido, de ahí mi último comentario "comprobar si hay errores después de cada llamada". – Nick