Entonces, lo que estoy tratando de hacer es generar una imagen de fondo para mi juego dibujando pixmaps a una textura. Hasta ahora puedo hacerlo, pero ahora necesito dibujar los pixmaps invertidos en el eje X o Y a la textura. Sin embargo, no puedo encontrar nada que hacer. La clase pixmap no proporciona esa funcionalidad. Entonces pensé que podría dibujar una región de textura invertida en una textura, pero hasta ahora no he encontrado cómo hacerlo. Entonces me preguntaba cómo puedo hacer tal cosa, ¿sería posible voltear una imagen png con otras bibliotecas java y luego crear un mapa de píxeles a partir de esa imagen volteada?cómo voltear un mapa de puntos para dibujar una textura en libgdx?
10
A
Respuesta
7
Asimismo, no veo otra opción excepto para recorrer los píxeles:
public Pixmap flipPixmap(Pixmap src) {
final int width = src.getWidth();
final int height = src.getHeight();
Pixmap flipped = new Pixmap(width, height, src.getFormat());
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
flipped.drawPixel(x, y, src.getPixel(width - x - 1, y));
}
}
return flipped;
}
0
he aquí una solución que no requiere la creación de un nuevo mapa de puntos. Este código también se puede modificar para voltear un Pixmap horizontal y verticalmente intercambiando esquinas de una imagen de mapa de bits en lugar de intercambiar píxeles en lados opuestos de la imagen.
public static void flipPixmap(Pixmap p){
int w = p.getWidth();
int h = p.getHeight();
int hold;
//change blending to 'none' so that alpha areas will not show
//previous orientation of image
p.setBlending(Pixmap.Blending.None);
for (int y = 0; y < h/2; y++) {
for (int x = 0; x < w/2; x++) {
//get color of current pixel
hold = p.getPixel(x,y);
//draw color of pixel from opposite side of pixmap to current position
p.drawPixel(x,y, p.getPixel(w-x-1, y));
//draw saved color to other side of pixmap
p.drawPixel(w-x-1,y, hold);
//repeat for height/width inverted pixels
hold = p.getPixel(x, h-y-1);
p.drawPixel(x,h-y-1, p.getPixel(w-x-1,h-y-1));
p.drawPixel(w-x-1,h-y-1, hold);
}
}
//set blending back to default
p.setBlending(Pixmap.Blending.SourceOver);
}
Cuestiones relacionadas
- 1. Voltear la textura OpenGL
- 2. representación de video en una textura en LibGDX
- 3. ¿Cómo puedo voltear un sprite/textura en OpenGLES?
- 4. Cómo dibujar la clase Button en libgdx
- 5. voltear coordenadas al dibujar para controlar
- 6. cómo dibujar líneas de cuadrícula con libgdx
- 7. libgdx SpriteBatch renderizar a la textura
- 8. Cómo dibujar un mapa mental
- 9. ¿Cómo puedo dibujar texto usando Libgdx/Java?
- 10. ¿Cómo dibujar una ruta con un mapa de bits?
- 11. Usar alfa de textura para dibujar un color sólido
- 12. Cómo dibujar rectángulos en un mapa base
- 13. ¿Voltear un mapa de bits en la ayuda de Android?
- 14. Cómo dibujar una textura en un quad con OpenGL ES 2?
- 15. ¿Cómo se textura el mapa sobre una superficie curva?
- 16. Cómo dibujar un mapa de bits en Android usando OpenGL
- 17. Cómo dibujar un MKPolyline en un MapView?
- 18. LibGDX SpriteBatch Multitexture posible?
- 19. Voltear un sprite en lienzo
- 20. Dibujar puntos en la imagen usando jQuery
- 21. Libgdx ¿SpriteBatch se basa en StencilBuffer?
- 22. Aplicar una textura para trazar un CGContextStrokePath
- 23. ¿Cómo dibujar un área rectangular en un gran mapa de google y una base de datos de consulta para encontrar ubicaciones/puntos que existen dentro del rectángulo?
- 24. dibujar ruta en el mapa en iphone
- 25. Cómo dibujar una vista de texto en un mapa de bits (sin dibujar nunca en la pantalla)
- 26. Dibuje un BitmapFont girado en libgdx
- 27. ¿Cómo dibujar una ruta en un mapa usando el archivo kml?
- 28. Copiar textura al búfer de pantalla sin dibujar quad (abrir)
- 29. ¿Cómo puedo voltear un UIImageView?
- 30. ¿Cómo leer una Textura CUDA para probar?
Recuerda desechar el Pixmap original –
Thx! Por cierto, si quieres voltear el eje Y en su lugar, simplemente haces 'flipped.drawPixel (x, y, src.getPixel (x, height - y - 1));'. – Sawny
En caso de que necesite rotar un mapa de píxeles 90 grados: he creado un método para hacer esto inspirado en su idea, vea http://stackoverflow.com/a/34362685/2399024 – donfuxx