title: Why is glReadPixels() failing in this code in iOS 6.0?
body: <p>The following is code I use for reading an image from an OpenGL ES scene:</p>
  
  <pre><code>-(UIImage *)getImage{
  
      GLint width;
  
      GLint height;
  
      glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &amp;width);
  
      glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &amp;height);
  
  
      NSLog(@"%d %d",width,height);
  
      NSInteger myDataLength = width * height * 4;
  
      // allocate array and read pixels into it.
      GLubyte *buffer = (GLubyte *) malloc(myDataLength);
      glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
  
      // gl renders "upside down" so swap top to bottom into new array.
      // there's gotta be a better way, but this works.
      GLubyte *buffer2 = (GLubyte *) malloc(myDataLength);
      for(int y = 0; y &lt; height; y++)
          {
          for(int x = 0; x &lt; width * 4; x++)
              {
              buffer2[((height - 1) - y) * width * 4 + x] = buffer[y * 4 * width + x];
              }
          }
  
      // make data provider with data.
      CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL);
  
      // prep the ingredients
      int bitsPerComponent = 8;
      int bitsPerPixel = 32;
      int bytesPerRow = 4 * width;
      CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
      CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
      CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
  
      // make the cgimage
      CGImageRef imageRef = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
  
      // then make the uiimage from that
      UIImage *myImage = [UIImage imageWithCGImage:imageRef];
      CGImageRelease(imageRef);
      CGDataProviderRelease(provider);
      CGColorSpaceRelease(colorSpaceRef);
      free(buffer);
      free(buffer2);
      return myImage;
  
  }
  </code></pre>
  
  <p>This is working in iOS 5.x and lower versions, but on iOS 6.0 this is now returning a black image. Why is <code>glReadPixels()</code> failing on iOS 6.0?</p>