La meilleure façon de copier un fichier PNG dans une plus grande texture en blanc / code généré? (OpenGL ES 1.1 / iPhone)

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

  •  22-08-2019
  •  | 
  •  

Question

J'ai 320x480 PNG que je voudrais à la carte de texture / manipuler sur l'iPhone, mais ces dimensions ne sont évidemment pas la puissance de 2. Je l'ai déjà testé mon texture algorithme de manipulation de la carte sur un 512x512 PNG qui est un fond noir avec un 320x480 l'image superposée sur elle, centré à l'origine (coin inférieur gauche (0,0)) lorsque la surface est correctement orienté 320x480 / centré / mise à l'échelle sur l'écran de l'iPhone.

Ce que je voudrais faire maintenant des progrès au point où je peux prendre 320x480 images source et les appliquer à un fond blanc / noir 512x512 texture générée dans le code de sorte que les deux combinerait comme une texture pour que je puisse appliquer les sommets et les coordonnées de texture j'ai utilisé dans mon test 512x512. Ce sera finalement utilisé pour la caméra capturé et rouleau caméra images provenant, etc.

Toutes les pensées? (Doit être pour OpenGL ES 1.1 sans utiliser de boîte à outils GL util, etc.).

Merci, Ari

Était-ce utile?

La solution

Une méthode que j'ai trouvé au travail est d'attirer simplement les deux images dans le contexte actuel, puis extraire l'image combinée résultante. Y at-il une autre façon qui est plus orienté vers OpenGL qui peuvent être plus efficent?

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

À ce stade, vous pouvez passer à utiliser spriteImage comme source d'image pour la texture et il sera une combinaison d'un blanc 512x512 PNG avec un 320x480 PNG par exemple.

Je vais remplacer le PNG blanc 512x512 avec une image générée dans le code, mais cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top