2010-12-07 3 views
0

Je ne suis que la scène de rendu de la profondeur d'une image tampon différente, le problème est un peu difficile à expliquer mais comme vous pouvez le voir sur l'image, elle souffre d'artefacts. Avez-vous une idée de ce qui peut être la source de cela?Profondeur des artefacts de rendu

ici est le code pour la création de fb:

self.shadowTexture = glGenTextures(1);   
    glBindTexture(GL_TEXTURE_2D, self.shadowTexture); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 

    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, w, h, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, None); 

    glBindTexture(GL_TEXTURE_2D, 0); 
    self.fbo = glGenFramebuffers(1) 
    glBindFramebuffer(GL_FRAMEBUFFER_EXT, self.fbo) 
    glDrawBuffer(GL_NONE); 
    glReadBuffer(GL_NONE); 
    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D, self.shadowTexture, 0); 

alt text

Répondre

4

Votre problème vient très probablement du fait que votre matrice de projection a trop seperation entre près et avions loin (ce qui signifie rapprochés pixels souffrent de problèmes de précision à virgule flottante). Réduisez l'écart entre les deux avions et cela devrait résoudre vos problèmes de Z-combat.

+0

merci Goz, ça semble être ça. Je travaillais en fait sur des cartes d'ombre, en utilisant des valeurs raisonnables pour la lumière et les matrices de projection de caméra est difficile. –