Я делаю снимок через камеру, и я хочу изменить его формат, чтобы сделать его совместимым с OpenGL ES 2.0.Как изменить формат изображения в ios для использования в OpenGL? (Загрузить изображения в OpenGL ES 2.0)
Сначала я получить картину, и я изменить его размер (что делает его силу 2 на всякий случай):
UIImage *newImage = [self imageWithImage:imgName scaledToSize:CGSizeMake(100, 144)];
Затем изменить формат из формата JPEG (который я думаю, его формат на iPhone по умолчанию), чтобы PNG:
NSData *test = UIImagePNGRepresentation(newImage);
UIImage *converted = [[UIImage alloc] initWithData:test];
Последнее, что я создаю свой контекст и вовлечь в него:
GLubyte * spriteData = (GLubyte *) calloc(width*height*4, sizeof(GLubyte));
CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width*4,
CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);
CGContextDrawImage(spriteContext, CGRectMake(0, 0, width, height), spriteImage);
CGContextRelease(spriteContext);
и я могу просто добавить открытый GL-буфер после этого, к сожалению, его не работает (появляется только черный), im уверен, что он из-за формата изображения, потому что, если я делаю то же самое прозаик с другим изображением, которое я уже знаю, это работает, тогда все идет гладко.
Я сделал некоторые исследования, и это может быть связано с глубиной цвета в моем изображении, так как мне нужно 4 бита на пиксель для рендеринга в opengl texture (4,4,4,4).
Внутренний формат: RGBA, Внешний Формат: RGBA, Тип: UNSIGNED BYTE, байт на пиксель: 4.
Так что мой вопрос, как я могу изменить этот формат PNG с любой глубины имеет к схеме мне нужно ?
PD: Если кто-то знает другой способ загрузить изображение в opengl, пожалуйста, дайте мне знать!
Спасибо!
Благодарим за быстрый ответ. Я попробовал ваш метод, и он работает только для уже определенной текстуры. проблема в том, что я пытаюсь «текстурировать» объект, используя камеру на iphone, поэтому мне нужно взять вход с камеры. У меня есть изображение, и я показываю его на своем экране в форматах jpeg и png, поэтому я знаю, что он работает, я также попытался изменить его размер. но когда я попытался отобразить его, используя свой метод, я получаю тот же результат im im (черный, где текстура должна быть). Я столкнулся с чем-то подобным, когда захотел создать свою текстуру, и проблема была в глубине цвета. Есть идеи? = ( – Pochi
Оказалось, что проблема была в размере размера, который я создавал. Эта строка UIImage * newImage = [self imageWithImage: imgName scaledToSize: CGSizeMake (100, 144)]; Создает NON мощность 2 изображения и для текстур iphone вам нужно иметь 2 изображения (256x256, 256x512 и т. д.) Thx для ур помочь – Pochi
да! :) Я думаю, вы знаете об этом. – SAKrisT