Der beste Weg, eine PNG in einen größeren Rohling / Code generiert Textur kopieren? (OpenGL ES 1.1 / iPhone)

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

  •  22-08-2019
  •  | 
  •  

Frage

Ich habe einen 320x480 PNG, die ich Texturkarte möchte / auf dem iPhone manipulieren, aber diese Dimensionen sind natürlich nicht Potenz von 2 bereits ich meine Textur-Map Manipulation Algorithmus auf einem 512x512 PNG getestet, die ein schwarzer Hintergrund mit einem 320x480 ist Bild überlagert, am Ursprung zentrierte (linke untere Ecke (0,0)), wo der 320x480 Bereich auf dem iPhone-Bildschirm richtig ausgerichtet / zentriert / skaliert werden.

Was mag ich jetzt tun sind, Fortschritte zu dem Punkt, wo ich 320x480 Quellbilder nehmen und sie auf einen leeren / schwarzen Hintergrund 512x512 Textur in Code erzeugt, so dass die beide als eine Textur kombinieren würden, so dass ich anwenden kann die Ecken und Texturkoordinaten verwenden ich in meinem 512x512 Test. Dies wird schließlich für Kamera erfasst und Kamerarolle sourced Bilder, usw. verwendet werden.

Alle Gedanken? (Muss für OpenGL ES 1.1 sein, ohne util-Toolkit Verwendung von GL, usw.).

Danke, Ari

War es hilfreich?

Lösung

Eine Methode, die ich gefunden habe, ist zu arbeiten, einfach beiden Bilder in den aktuellen Kontext zu ziehen und dann das resultierende kombinierte Bild zu extrahieren. Gibt es eine andere Art und Weise, die mehr in Richtung OpenGL darauf ausgerichtet, die mehr efficent sein können?

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

An dieser Stelle können Sie fortfahren spriteImage als Bildquelle für die Textur zu verwenden, und es wird eine Kombination aus einem leeren 512x512 PNG mit einem 320x480 PNG zum Beispiel.

Ich werde das 512x512 leere PNG mit einem Bild erzeugt in Code ersetzen, aber das funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top