Il modo migliore per copiare un PNG in un grande vuoto / codice generato trama? (OpenGL ES 1.1 / iPhone)

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

  •  22-08-2019
  •  | 
  •  

Domanda

Ho un 320x480 PNG che vorrei mappa per consistenza / manipolare su iPhone, ma queste dimensioni non sono ovviamente potenza di 2. Ho già provato il mio tessitura algoritmo mappa manipolazione su un PNG 512x512 che è uno sfondo nero con un 320x480 immagine sovrapposto su di esso, centrato all'origine (in basso a sinistra (0,0)) se la zona 320x480 è correttamente orientato / centrato / in scala sullo schermo di iPhone.

Quello che vorrei fare ora è il progresso al punto in cui posso prendere 320x480 immagini di origine e applicarli a uno sfondo bianco / nero 512x512 texture generate nel codice in modo che i due avrebbero combinare come una trama in modo che posso applicare i vertici e le coordinate di texture ho usato nel mio test 512x512. Questo sarà poi utilizzato per la fotocamera catturato e Rullino immagini di provenienza, ecc.

Qualche idea? (Deve essere per OpenGL ES 1.1, senza uso di GL util toolkit, ecc.).

Grazie, Ari

È stato utile?

Soluzione

Un metodo che ho trovato a lavorare è quello di disegnare semplicemente entrambe le immagini nel contesto attuale e quindi estrarre l'immagine combinata risultante. C'è un altro modo che è più orientata verso OpenGL che può essere più efficiente?

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

A questo punto si può procedere ad utilizzare spriteImage come origine immagine per la texture e sarà una combinazione di un vuoto 512x512 PNG con un 320x480 PNG per esempio.

Ti sostituire il PNG vuoto 512x512 con un'immagine generata in codice, ma questo funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top