如何在LibGDx中加载图像作为背景?

Tom*_*sss 4 android libgdx live-wallpaper

我制作动态壁纸,我有一个问题.我想将图像设置为背景,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
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像:

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() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找我的问题的解决方案,我没有找到.

P.T*_*.T. 5

在这种情况下,libGDX错误消息实际上是有用的!

Texture width and height must be powers of two: 480x800
Run Code Online (Sandbox Code Playgroud)

因此纹理宽度和高度必须是以下之一:2,4,8,16,32,64,128,256,512,1024,2048(该列表中既不是480也不是800 ......)

你有这条神奇的线条:

Texture.setEnforcePotImages(false);
Run Code Online (Sandbox Code Playgroud)

但它在纹理加载后.如果你把它放在纹理加载之前,异常会消失吗?(在您的问题中包含更多的异常回溯会很有帮助).我相信这种方法仅适用于您知道底层OpenGL ES 1.0系统支持非二次幂纹理扩展的情况.设置此标志不会修复真正不支持2次幂纹理的硬件.(我不知道这个世界上剩下多少这样的硬件,所以这些日子可能是无害的.)

二次幂纹理要求是硬件和OpenGL ES的限制.此要求已从OpenGL ES 2.0中删除.

解决这个要求的另一种方法是构建一个两个大小的纹理图集,它包含你的非二能力纹理.然后渲染图集图像的子部分.见http://bitiotic.com/blog/2012/05/10/tutorial-for-texturepacker-and-libgdx/