La mejor manera de copiar un archivo PNG en un blanco grande / código generado textura? (OpenGL ES 1.1 / iPhone)

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

  •  22-08-2019
  •  | 
  •  

Pregunta

Tengo un PNG 320x480 que me gustaría mapa para la textura / manipulan en el iPhone, pero estas dimensiones no son, evidentemente, potencia de 2. Ya a prueba mi textura algoritmo de manipulación en un mapa PNG de 512x512 que es un fondo negro con un 320x480 imagen superpuesta a ella, centrado en el origen (esquina inferior izquierda (0,0)) donde el área de 320x480 se orienta adecuadamente / centrado / escala en la pantalla del iPhone.

Lo que me gustaría hacer ahora es el progreso hasta el punto en que puedo tomar 320x480 imágenes de origen y aplicarlos a un fondo blanco / negro 512x512 textura genera en código para que los dos se combinan como una textura de modo que pueda aplicar los vértices y coordenadas de textura que he usado en mi prueba de 512x512. Este será el tiempo utilizado para las imágenes procedentes de la cámara y la cámara de rollo capturado, etc.

¿Alguna idea? (Deben ser para OpenGL ES 1.1 sin el uso de GL toolkit util, etc.).

Gracias, Ari

¿Fue útil?

Solución

Uno de los métodos que he encontrado para trabajar es llamar simplemente las dos imágenes en el contexto actual y luego extraer la imagen combinada resultante. ¿Hay otra manera que está más orientado a OpenGL que puede ser más eficiente?

// 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();

En este punto se puede proceder a utilizar spriteImage como el origen de la imagen de la textura y va a ser una combinación de un espacio en blanco 512x512 PNG con un PNG 320x480 por ejemplo.

Voy a reemplazar el 512x512 PNG en blanco con una imagen generada en el código, pero esto funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top