LibGDX纹理不会被绘制

时间:2017-03-03 21:01:51

标签: libgdx textures

所以我在start()end()之间使用批处理,我试图绘制两个纹理。但是,其中只有一个是绘图。我试图删除正在绘制的那个,看看对方是否会绘制,但是那个特定的纹理仍然不会被绘制。纹理的设置方式完全相同,唯一的区别是非绘图的纹理包含一些透明度。

private static Texture bg1 = new Texture(Gdx.files.internal("bg1.png"));
private static Texture bg2 = new Texture(Gdx.files.internal("bg2.png"));
private static int bgx1 = 0, bgx2 = 0;

public static void create() {
    bg1.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);
    bg2.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); 
}

public static void render() {
    bgx1 += 1; bgx2 += 1.7;
    Core.batch.draw(bg1, 0, 0, bgx1, 0, Gdx.graphics.getWidth(), bg1.getHeight()); 
    Core.batch.draw(bg2, 0, 0, bgx2, 0, Gdx.graphics.getWidth(), bg2.getHeight());
}

1 个答案:

答案 0 :(得分:0)

从我看到的,你使用的是draw()方法,它的第四个参数是 int 类型。绘制第二个纹理时,第四个参数 bgx2 当前是 float 而不是 int (因为 bgx2 = 1.7 ) 。也许这可能是问题?如果你看一下绘制第一个纹理,draw()的第四个参数应该是 int 。对于 bgx2 ,请尝试使用整数值而不是1.7。

此外,将所有draw()方法放在batch.begin()和batch.end()之间。

有关详细信息,请参阅libGDX文档:https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Batch.html#draw-com.badlogic.gdx.graphics.Texture-float-float-int-int-int-int-