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