Libgdx:在Actor中绘制的纹理太大

Libgdx:在Actor中绘制的纹理太大,libgdx,actor,stage,scene2d,spritebatch,Libgdx,Actor,Stage,Scene2d,Spritebatch,我想画一个纹理。只要我在屏幕的渲染方法中执行此操作,此操作就可以正常工作: public void render(float delta) { batch.begin(); batch.draw(new Texture(Gdx.files.internal("badlogic.jpg")), 0f, 0f, 100, 100f); batch.end(); } 但是,如果使用我的演员渲染纹理,图像将无法正确显示。我看到的不是图像,而是一个太大的像素 // The co

我想画一个纹理。只要我在屏幕的渲染方法中执行此操作,此操作就可以正常工作:

public void render(float delta) {
    batch.begin();
    batch.draw(new Texture(Gdx.files.internal("badlogic.jpg")), 0f, 0f, 100, 100f);
    batch.end();
}

但是,如果使用我的演员渲染纹理,图像将无法正确显示。我看到的不是图像,而是一个太大的像素

// The constructor of my Screen
public GameScreen(Main game) {
    Gdx.gl.glClearColor(1, 1, 1, 1f);
    Gdx.gl.glClear(Gdx.gl.GL_COLOR_BUFFER_BIT);

    viewport = new ExtendViewport(100f, 100f * (4f / 3f), 100f, 100f * (2f / 1f));
    viewport.apply();
    viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);

    stage = new Stage(viewport, batch);
    stage.addActor(new MyActor());
    //...
}


//The Actor-Class:
public class MyActor extends Actor {
@Override
public void draw(Batch batch, float parentAlpha) {
    batch.draw(new Texture(Gdx.files.internal("badlogic.jpg")), 0f, 0f, 100, 100f);
}
}


提前感谢:)

问题是由我使用SpriteBatch绘制纹理和ShaperEnder引起的。 解决方案:

batch.end(); //!!
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.line(...);
//...
shapeRenderer.end();
batch.begin();

不要在“绘制”或“渲染”方法中实例化纹理。您正在加载一个新图像,并在每个帧上泄漏旧图像。这只是出于测试目的,谢谢:)