title: take screen Programmatically of UIview+glview
body: <p>i have glview in my uiview ,now i have to take scrren shot of combine view of uiview and glview.
  i googled lot but i dnt found any thing useful i know how to take scrrenshot of glview </p>
  
  <blockquote>
    <p>nt width = glView.frame.size.width;
        int height = glView.frame.size.height;</p>
  </blockquote>
  
  <pre><code>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];
  return myImage;
  </code></pre>