Ich erhalte einen Fehler GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
, nachdem ich versuche, einen Framebuffer zu erstellen, der zu einer Textur rendert. Ich kann nicht herausfinden, was falsch ist, jede Hilfe wird sehr geschätzt.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT beim Versuch, Textur anzufügen
Bearbeiten: Fixed it! Arbeitscode:
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);
Hinweis: Wenn Ihre Version nicht funktioniert, stellen Sie sicher, dass Sie für Fehler nach jedem überprüfen und jedem Anruf und dass Sie den Fehler vor dem ersten Anruf zu löschen, sonst werden Sie Fehlerprüfung sein der Code davor.
Ich habe meinen Code mit diesem Snippet verglichen, um einen Fehler zu finden. Für Android OpenGL ES 2.0 war der Haken für mich GL_DEPTH_COMPONENT vs GL_DEPTH_COMPONENT16. Stellen Sie im glRenderBufferStorage sicher, dass die Tiefenkomponente GL_DEPTH_COMPONENT16 ist. Schwierig zu fangen, da jede Codezeile ansonsten mit Ihrem Code identisch war. – Halsafar
Sie sollten den schlechten Code auch lassen, damit Leute, die es nach der Tat lesen, die Lösung sehen können. Oder atleast erklären, was Sie überprüft haben. Egal, danke für die Anzeige des festen Codes. – Arelius
@Halsafar Ja, das ist ein ziemlich häufiger Fehler. Gut, dass du es bemerkt hast. Wenn Sie jedoch das Wrapping auf Fehler überprüfen, würden Sie diesen Fehler viel schneller finden, daher mein letzter Kommentar "Nach jedem Aufruf auf Fehler prüfen". – Nick