2013-04-03 5 views
1

Alors que le portage d'une application de l'iPhone 4S à l'iPhone 5, je suis le GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS d'erreur après avoir appelé ce code:Pourquoi GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS? iPhone 5

glBindFramebuffer(GL_FRAMEBUFFER, 1); 

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 1); 

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 2); 

Selon les OpenGLES spec l'erreur est causée par « Les pièces jointes ne pas la même largeur et hauteur ", mais j'utilise 1136 x 640 pour le tampon de couleur et de profondeur.

Le même code fonctionne bien sur iphone 4s (avec 960 x 640 tampons).

Répondre

2

La profondeur et le tampon de couleur ont une taille de diff. Pour obtenir tampon de couleur taille réelle:

[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer] 
    glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &w); 
    glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &h); 

Aussi, vous devez définir l'échelle à CAEAGLLayer:

layer.contentsScale = [[UIScreen mainScreen] scale]; 

Vous pouvez voir comment cela se fait dans Ogre3D, SDL, Cocos2d-x.