Возможно, вы не установили кадровый буфер на правильный размер. Если вы используете iPhone 4, наиболее распространенной ошибкой является использование указанных размеров представления, которые совпадают с предыдущими моделями, даже несмотря на то, что iPhone 4 имеет вдвое большее разрешение.
Вот как я делаю это в своем приложении (Важное предупреждение: для меня это все чёрная магия, так что возьмите это с крошкой соли, и, пожалуйста, не просите меня объяснить это):
- (BOOL)resizeFromLayer:(CAEAGLLayer *)layer {
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:layer];
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &vWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &vHeight);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderBuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, vWidth, vHeight);
if (glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES)
{
NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
return NO;
}
return YES;
}