Il modo migliore per copiare un PNG in un grande vuoto / codice generato trama? (OpenGL ES 1.1 / iPhone)
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
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.