Почему этот код скриншота GLView возвращает пустой / черный UIImage?

Я использую следующий код, чтобы сделать снимок экрана из пикселей в GLView . Проблема в том, что он возвращает полностью черный UIImage . Этот код вызывается в LineDrawer.m который является сердцем кода GLView поэтому он вызывается из файла .m. Как сохранить фактический снимок экрана, а не черный?

 - (UIImage*) getGLScreenshot { NSLog(@"1"); float scale = 0.0; if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { // scale value should be 1.0 on 3G and 3GS, and 2.0 on iPhone 4. scale = [[UIScreen mainScreen] scale]; } // these are swapped since the screen is rotatey float h = 768 * scale; float w = 924 * scale; NSInteger myDataLength = w * h * 4; // allocate array and read pixels into it. GLubyte *buffer = (GLubyte *) malloc(myDataLength); glReadPixels(0, 0, w, h, 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 <h; y++) { for(int x = 0; x <w * 4; x++) { buffer2[(((int)h-1) - y) * (int)w * 4 + x] = buffer[y * 4 * (int)w + 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 * w; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; // make the cgimage CGImageRef imageRef = CGImageCreate(w, h, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); // then make the uiimage from that UIImage *myImage = [UIImage imageWithCGImage:imageRef]; return myImage; } - (void)saveGLScreenshotToPhotosAlbum { UIImageWriteToSavedPhotosAlbum([self getGLScreenshot], nil, nil, nil); } 

2 Solutions collect form web for “Почему этот код скриншота GLView возвращает пустой / черный UIImage?”

Я должен был сделать что-то подобное в Sparrow Framework некоторое время назад, вы должны убрать части, которые вам нужны, из кода в этом форуме: http://forum.sparrow-framework.org/topic/spdisplayobjectscreenshot

EDIT: Также этот пост http://forum.sparrow-framework.org/topic/taking-screenshots

Изменение доступных свойств

eaglLayer.drawableProperties = [Словарь NSDictionaryWithObjectsAndKeys:

  [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat, nil]; 

kEAGLDrawablePropertyRetainedBacking to YES

  • Исходный язык IOS, переведенный в строку и его идентификатор кода языка (LCID)
  • Скрыть всплывающее окно при аннотации, отображаемой на MapView
  • Воспроизведение ребенка UIScrollView после нажатия кнопки UINavigationController и pop
  • Как имитировать состояние дискового пространства на устройствах iOS?
  • Swift жалуется на «постороннюю метку аргумента»
  • Дизайн для iPhone и iPad, когда iPad покажет все Container Views и iPhone, только некоторые из них
  • Проблемы с запуском приложения Apple Watch glance в симуляторе
  • как сделать выцветшую навигационную панель
  • XCode нашел пакет с тем же идентификатором, используя рамки cocoapods
  • Xcode обновлен до 7.2, но все еще показывает только 7.1
  • Приложение зависает при отладке на устройстве iOS 3.1.3 с Xcode 4.3.2
  • Interesting Posts

    Можно ли сделать iOS безопасным?

    Может ли кто-нибудь сказать мне, почему UIImage.ciimage является нулевым

    Core plot – добавьте OutOfRange для рисования графика, который динамически изменяется с меткой «OL»

    Как я могу получить UIPickerview для автоматического обновления UILabel

    ld: warning: каталог не найден для опции – удаление производных данных и проект очистки не работают

    Диаграмма классов UML для Xcode (Not Omnigraffle)

    Как загрузить файл в Amazon S3 и получить URL-адрес в ответ с помощью iOS

    Добавление FacebookSDK.framework в мою собственную статическую библиотеку

    AQGridView под управлением NSFetchedResultsController

    XCode пытается загрузить файл NIB, который я удалил из проекта

    Почему UIView вызывает как init, так и initWithFrame?

    Код фрагмента для использования сложного JavaScript для вставки HTML внутри UIWebView?

    Частота & демпфирование SKPhysicsJointSpring в Swift

    Когда и почему я хочу объявить локальную переменную как __weak с помощью ARC?

    Я изучаю Swift, и я создаю приложение для простого кубика, я не могу найти, что не так с кодом

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.