Создание png UIImage из рисунка OpenGL

Я экспортирую свои рисунки OpenGL в UIImage, используя следующий метод:

-(UIImage*)saveOpenGLDrawnToUIImage:(NSInteger)aWidth height:(NSInteger)aHeight { NSInteger myDataLength = aWidth * aHeight * 4; GLubyte *buffer = (GLubyte *) malloc(myDataLength); glReadPixels(0, 0, aWidth, aHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer); GLubyte *buffer2 = (GLubyte *) malloc(myDataLength); for(int y = 0; y < aHeight; y++) { for(int x = 0; x < aWidth * 4; x++) { buffer2[(aHeight-1 - y) * aWidth * 4 + x] = buffer[y * 4 * aWidth + x]; } } CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL); int bitsPerComponent = 8; int bitsPerPixel = 32; int bytesPerRow = 4 * aWidth; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; CGImageRef imageRef = CGImageCreate(aWidth, aHeight, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); UIImage *myImage = [UIImage imageWithCGImage:imageRef]; return myImage; } 

Но фон всегда черный, а не прозрачный.

Я попытался использовать CGImageRef imageRef = CGImageCreateWithPNGDataProvider(provider, NULL, NO, kCGRenderingIntentDefault); но он всегда генерирует нуль.

Как я могу заставить это обрабатывать прозрачный фон?

Это вопрос о том, как создать изображение из необработанных RGBA-данных. Я думаю, что вам не хватает дескриптора в информации растрового изображения, чтобы сказать, что вам нужен альфа-канал …

Попробуйте создать UIImage из необработанных данных RGBA

В первом комментарии описывается использование kCGBitmapByteOrder32Big|kCGImageAlphaLast

  • Загрузка нескольких изображений в один и тот же UIImageView запустит последнее изображение перед показом нового изображения
  • Кэширование изображений в памяти на iOS, что меньше: объект UIImage или NSData?
  • Как вы получаете UIImage из AVCaptureVideoPreviewLayer?
  • UIImage отличается при использовании в iOS
  • Сканирование статического UIImage с помощью ios ZBar SDK
  • обнаружение лица iOS с камеры
  • Как я могу взять UIImage и дать ему черную границу?
  • Только для iPhone, iOS 7+, мы можем включить только изображения с разрешением 3x?
  • Избегание смешанных слоев при использовании resizableImages на iOS
  • Retina дисплей VS нормальный цвет дисплея разница
  • Шифрование / расшифровка для изображения на IOS
  • Interesting Posts

    Индивидуальная сборка API для iPhone

    В Corona SDK, как ограничить количество строк, нарисованных на один?

    Тестирование приложения iOS с устройством бета-версии iOS 5.0.1

    Эффективный способ выполнения массива INSERT / UPDATE / DELETE в CoreData.

    Проинформирование контроллера просмотра программно с помощью раскадровки из AppDelegate

    Почему приложение запускается каждый раз, когда я пытаюсь показать два контроллера дочерних представлений, которые являются GLKViewControllers?

    EXC_BAD_ACCESS в простом коде в выпуске

    Запись звука с помощью OpenAL на iOS

    Является ли Cocos2d-xa хорошей платформой для разработки игр?

    UIDocumentInteractionController не учитывает появление barTintColor UINavigationBar в iOS 11

    iPhone: Push Notification Testing on Production Certificate

    Белое видео при открытии AVMutableComposition в Instagram

    Как загрузить все PDF-файлы библиотеки разработчиков Apple?

    Использование NSLayoutConstraints для выравнивания динамических представлений по вертикали в ScrollView с использованием Swift

    Операции сборки отключены: «project.xcworkspace» изменился и перезагружается

    Давайте будем гением компьютера.