Лучший способ скопировать PNG в текстуру большего размера, созданную с помощью кода?(OpenGL ES 1.1 / iPhone)

StackOverflow https://stackoverflow.com/questions/521483

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть формат 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 на изображение, сгенерированное в коде, но это действительно работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top