正在加载图像libgdx

时间:2014-02-14 16:14:00

标签: java android textures libgdx

所以我有两个独立的程序,但是我无法在一个而不是另一个上加载图像。

在第一个中,我有一个图像,我在mainGameScreen.java中加载为800x480像素的纹理。

Texture img1;
img1= new Texture(Gdx.files.internal("bg1.png"));

它加载完全没问题

所以首先要问一个为什么一个加载而另一个加载,即使第一个只是第二个的横向版本。

在我的第二个程序中,我有一个480x800的图像。我在Images.java中加载它。

public class Images{
    public static Texture img2;
    public static void load(){
        img2 = new Texture (Gdx.files.internal("bg2.PNG"))

引发错误Texture width and height must be a power of 2

但是如果我将图像的大小更改为512x512,那么它不会引发任何错误,但是当我渲染它时,我会得到一个带有静态颜色的空白屏幕。

然后在我的MyRenderer.java文件中,我有一个批处理,我将它绘制到我的批处理中。

public class MyRenderer{
    OrthographicCamera camera;
    public MyRenderer(){
        camera = new OrthographicCamera();
        camera.position.set(0, 0, 0);

    public void update;
        camera.update();
        batch.SetProjectionMatrix(camera.combined)
        batch.begin();
        batch.draw(Images.img2, 0, 0);
        batch.end ();

1 个答案:

答案 0 :(得分:0)

如果您使用OpenGl ES 1和1.x,图像应该是2的幂,您可以在桌面或Android配置中将openGLES2设置为true,这假设您要使用从android 2.3到up,但是较旧的是ES 1.x和2的幂,所以我建议您使用GLES 2,因为在不久的将来新的libgdx可能会删除旧的GLES。

首先确保你处理SpriteBatch& dispose()上的纹理将dispose()方法添加到Images类并处理所有纹理,因为你使用静态图像,你在整个类中有一个纹理,所以删除静态和使用字段,其次我建议你使用Sprite来轻松控制图像并使用批处理来渲染该精灵。第三,你在一个我认为不好的类中使用静态图像,使用私有字段进行纹理。

另一个建议是使用游戏和屏幕来更好地管理不同级别。