Лучший способ скопировать PNG в большую пустую / сгенерированную текстуру текстуры? (OpenGL ES 1.1 / iPhone) - PullRequest
1 голос
/ 06 февраля 2009

У меня есть PNG размером 320x480, который я хотел бы текстурировать / манипулировать текстурой на iPhone, но эти размеры явно не равны 2. Я уже тестировал алгоритм манипуляции текстурной картой на PNG 512x512, который является черным фоном с разрешением 320x480 изображение, наложенное на него, по центру в начале координат (нижний левый угол (0,0)), где область 320x480 правильно ориентирована / отцентрирована / масштабирована на экране iPhone.

Что я хотел бы сделать сейчас, так это перейти к точке, где я могу взять исходные изображения размером 320x480 и применить их к пустой / черной текстуре фона 512x512, сгенерированной в коде, чтобы эти две комбинации были объединены в одну текстуру, чтобы я мог применить вершины и координаты текстуры, которые я использовал в своем тесте 512x512. В конечном итоге это будет использоваться для снятия с камеры и получения изображений с камеры и т. Д.

Есть мысли? (должно быть для OpenGL ES 1.1 без использования утилит GL утилит и т. д.).

Спасибо, Ari

1 Ответ

0 голосов
/ 06 февраля 2009

Один метод, который я нашел для работы, - это просто нарисовать оба изображения в текущем контексте, а затем извлечь полученное объединенное изображение. Есть ли другой способ, более ориентированный на 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 в качестве источника изображения для текстуры, и это будет комбинация пустого PNG 512x512 с PNG 320x480, например.

Я заменю пустой PNG 512x512 изображением, сгенерированным в коде, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...