Лучший способ скопировать PNG в текстуру большего размера, созданную с помощью кода?(OpenGL ES 1.1 / iPhone)
Вопрос
У меня есть формат PNG 320x480, который я хотел бы текстурировать на карте / манипулировать им на iPhone, но эти размеры, очевидно, не равны степени 2.Я уже протестировал свой алгоритм манипулирования текстурной картой на формате PNG 512x512, представляющем собой черный фон с наложенным на него изображением 320x480 с центром в начале координат (нижний левый угол (0,0)), где область 320x480 правильно ориентирована / центрирована / масштабирована на экране iPhone.
Что я хотел бы сделать сейчас, так это продвинуться до того момента, когда я смогу взять исходные изображения 320x480 и применить их к пустой / черной фоновой текстуре 512x512, сгенерированной в коде, чтобы они объединились в одну текстуру, чтобы я мог применить вершины и координаты текстуры, которые я использовал в своем тесте 512x512.В конечном итоге это будет использовано для снимков, сделанных камерой, и изображений, полученных с фотопленки, и т.д.
Есть какие-нибудь мысли?(должно быть для OpenGL ES 1.1 без использования GL util toolkit и т.д.).
Спасибо, Ари
Решение
Один из методов, который, как я обнаружил, работает, - это просто вставить оба изображения в текущий контекст, а затем извлечь результирующее объединенное изображение.Есть ли другой способ, более ориентированный на OpenGL, который может быть более эффективным?
// CGImageRef for background image
// CGImageRef for foreground image
// CGSize for current context
// Define CGContextRef for current context
// UIGraphicsBeginImageContext using CGSize
// Get value for current context with UIGraphicsGetCurrentContext()
// Define 2 rectangles, one for the background and one for the foreground images
// CGContextDrawImage(currentContext, backgroundRect, backgroundImage);
// CGContextDrawImage(currentContext, foregroundRect, foregroundImage);
// UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
// spriteImage = finalImage.CGImage();
// UIGraphicsEndImageContext();
На этом этапе вы можете перейти к использованию spriteImage в качестве источника изображения для текстуры, и это будет комбинация пустого формата 512x512 PNG, например, с 320x480 PNG.
Я заменю пустой файл PNG размером 512x512 на изображение, сгенерированное в коде, но это действительно работает.