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)
我正在寻找我的问题的解决方案,我没有找到.
在这种情况下,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/
| 归档时间: |
|
| 查看次数: |
12193 次 |
| 最近记录: |