2010-08-09 2 views
3

J'ai un projet iPhone OpenGL-ES 1.1 qui rend des modèles 3D simples. Si je n'attache pas un buffer de profondeur, tout se passe correctement (sauf avec aucune conscience de profondeur bien sur). Quand j'attache le tampon de profondeur cependant, tout ce qui rend est un écran magenta. La couleur claire n'est pas définie en magenta. C'est bleu. Tout le monde sait ce qui se passe ici. Ceci est mon code de configuration =>OpenGL-ES 1.1 iPhone - Le tampon de profondeur provoque un écran magenta

glGenFramebuffersOES(1, &framebuffer); 
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); 

    glGenRenderbuffersOES(1, &colorRenderbuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer); 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, screenWidth, screenHeight); 
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer); 

    glGenRenderbuffersOES(1, &depthRenderbuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, screenWidth, screenHeight); 
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer); 

Ceci donne l'écran magenta. Commenter les 4 dernières lignes l'amènera à rendre les objets.

Répondre

2

probablement votre screenWidth/screenHeight n'est pas encore initialisé?

Vérifiez si le problème suivant est corrigé: glRenderbufferStorageOES (GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, 320, 480);

+0

Ce n'était pas tout à fait ça. Ils ont été initialisés, mais ils ne correspondaient pas aux dimensions de l'UIView que je dessinais. Merci, cela m'a fait chercher au bon endroit –