Cómo cargar imágenes como fondo en LibGDx?
Hago fondos de pantalla en vivo y tengo un problema. Quiero fijar la imagen como fondo y error de la demostración de Eclipse:
01-10 10:37:18.206: E/AndroidRuntime(1045): FATAL EXCEPTION: GLThread 99 01-10 10:37:18.206: E/AndroidRuntime(1045): com.badlogic.gdx.utils.GdxRuntimeException: Texture width and height must be powers of two: 480x800
Mi código parece:
- Android: ¿Cómo iniciar la actividad desde el menú de preferencias?
- Java.io.IOException: setDataSource failed .: status = 0x80000000
- Hardware acelerado FFmpeg en android?
- Cómo hacer Animated Android Live Wallpaper?
- Elegir el fondo para Live Wallpaper
public class Tapeta implements ApplicationListener { private SpriteBatch batch; private Texture texture; private TextureRegion region; @Override public void create() { texture = new Texture(Gdx.files.internal("data/cat.jpg")); Texture.setEnforcePotImages(false); } @Override public void dispose() { texture.dispose(); } @Override public void render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); batch.draw(texture, 0, 0); batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }
Estoy buscando la solución de mi problema y no lo encontré.
- OnTouch no funciona en Live Wallpaper
- Imágenes en vivo de Android - OpenGL vs Canvas
- ¿Cómo puedo detectar si mi fondo de pantalla en vivo se está ejecutando en la actividad de vista previa / "Establecer papel tapiz" o en la pantalla de inicio
- IllegalArgumentException en unlockCanvasAndPost (fondo de pantalla en vivo Android)
- Implementación de "color selector" de Android PreferenceScreen
- Establecer Live Wallpaper de forma programática en Dispositivo enraizado Android
- Problema con la orientación de la pantalla de Android
- Obtener un error en WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER
En este caso, el mensaje de error libGDX es realmente útil!
Texture width and height must be powers of two: 480x800
Así que el ancho y altura de la textura debe ser uno de: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 (ni 480 ni 800 están en esa lista …)
Tienes esta línea mágica:
Texture.setEnforcePotImages(false);
Pero su después de la textura se carga. Si lo pones antes de la carga de textura, ¿desaparece la excepción? (Incluyendo más de la excepción backtrace en su pregunta sería útil). Creo que este método solo está disponible para el caso en el que se conozca que el sistema OpenGL ES 1.0 subyacente admite la extensión de textura sin potencia de dos. Establecer este indicador no arreglará hardware que realmente no admita texturas de potencia de dos. (No tengo ni idea de cuánto hardware se deja en el mundo, así que puede ser inofensivo en estos días.)
El requisito de textura power-of-two es una restricción del hardware y OpenGL ES. Este requisito se eliminó de OpenGL ES 2.0.
Otra forma de superar este requisito es construir un atlas de textura que tenga un tamaño de dos o tres, y contenga texturas de no-uno-poder-de-dos dentro. A continuación, renderizar las subsecciones de la imagen del atlas. Ver http://bitiotic.com/blog/2012/05/10/tutorial-for-texturepacker-and-libgdx/
- Facturación en la aplicación: Inventario incorrecto; Hace que el usuario vuelva a comprar
- Ampliación de Android Systrace Tool