Melhor maneira de copiar um arquivo PNG em um espaço em branco / código textura maior gerado? (OpenGL ES 1.1 / iPhone)

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

  •  22-08-2019
  •  | 
  •  

Pergunta

Eu tenho um PNG 320x480 que gostaria de textura mapa / manipular no iPhone mas estas dimensões não são, obviamente, potência de 2. Eu já testei meu mapa de textura algoritmo de manipulação em um PNG 512x512 que é um fundo preto com uma 320x480 imagem sobreposta sobre ele, centrada na origem (canto inferior esquerdo (0,0)) onde a área de 320x480 é orientada corretamente / centrado / escalado na tela do iPhone.

O que eu gostaria de fazer agora é progresso até o ponto onde eu posso tomar 320x480 imagens de origem e aplicá-los a um espaço em branco / fundo preto 512x512 textura gerada em código para que os dois se combinam como uma textura para que eu possa aplicar os vértices e coordenadas de textura que usei no meu teste de 512x512. Isso vai ser eventualmente usado para a câmera capturou e câmera rolo imagens de origem, etc.

Todos os pensamentos? (Deve ser para OpenGL ES 1.1 sem utilização de GL util conjunto de ferramentas, etc.).

Obrigado, Ari

Foi útil?

Solução

Um método que eu encontrei para trabalhar é simplesmente desenhar ambas as imagens no contexto atual e, em seguida, extrair a imagem combinada resultante. Existe outra maneira que é mais voltada para OpenGL que pode ser mais 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();

Neste ponto, você pode continuar a usar spriteImage como origem da imagem para a textura e vai ser uma combinação de um PNG em branco 512x512 com um PNG 320x480 por exemplo.

Eu vou substituir o 512x512 PNG em branco com uma imagem gerada no código, mas isso não funciona.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top