所以我在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());
}
答案 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-