Das Problem ist, dass du den Depthbuffer als Renderbuffer, und nicht als Depth Texture anhängst, du willst doch auf die Tiefenwerte nachher auch zugreifen oder nicht? Dann musst du eine
Depth Texture erstellen (Anmerkung: In deiner ersten Antwort hier sieht es aus, als ob du eine normale Textur als DEPTH_ATTACHMENT anhängen möchtest!), wie das geht sollte klar sein, und diese folgendermaßen an dein FBO hängen:
|
Quellcode
|
1
2
3
4
5
6
7
|
public void addTexture(DepthTexture texture) {
bind();
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, texture.getHandle(), 0);
textures ~= texture;
}
|
Wenn ich es richtig in Erinnerung hab, reicht es wenn du an dein FBO _nur_ die Tiefentextur hängst, dass ist am wenigsten Fehleranfällig - zumindest soweit dich sowieso nur die Tiefenwerte interessieren.
Alternativ funktioniert es natürlich auch mit Renderbuffern, damit hast du den Vorteil, dass du auch Multisampled in dein FBO rendern kannst, allerdings kommst du dann nicht so leicht an die Tiefenwerte, wie auch immer, wenn du ein Renderbuffer Objekt erstellt hast sähe der Code so aus:
|
Quellcode
|
1
2
3
4
5
|
public void addRenderBuffer(DepthRenderBuffer renderBuffer) {
bind();
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, renderBuffer.getHandle());
}
|
Viele Grüße!