PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL: FBO will nicht mit Depth Attachment zusammenarbeiten


Simon
2005-10-19, 10:05:34
Hallo,

ich versuche gerade ein FBO mit nur einem Depth Buffer Attachment zu realisieren. Dazu hab ich die Spec gelesen (Beispiel Nr 7 ist dort genau das, was ich machen will) und das Dokument im ATI SDK. Meine Initialisierung sieht so aus:


// generate fbo object
glGenFramebuffersEXT(1, &m_FBO);
CheckFrameBufferStatus(__LINE__);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_FBO);
CheckFrameBufferStatus(__LINE__);

// generate depth attachment
glGenTextures(1, &m_DepthAttachment);
glBindTexture(GL_TEXTURE_2D, m_DepthAttachment);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, width, height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);

//glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
//glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);

// attach depth texture
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_DepthAttachment, 0);
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);
CheckFrameBufferStatus(__LINE__);

glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);

Meldet keine Fehler und sollte funktionieren. Nun zum Rendern:

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_FBO);
glClear(GL_DEPTH_BUFFER_BIT);
// Render some geometry here...
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

Danach will ich den Depth Buffer als Textur benutzen. Dazu binde ich dann m_DepthAttachment. Nur ist diese Textur immer komplett weiß :(
Gerendert wird genau das gleiche, wie in den normalen FrameBuffer und dort seh ich das Model.
Fehler werden auch nirgends ausgegeben und nun weiß ich nicht weiter :(
Hat jemand einen Tip oder Hinweis für mich? =)

Danke, Enrico