4

我制作了一个ShapeRenderer用于制作彩色线条的游戏。这很好用,但是当我开始导入图像时,彩色线条突然变黑了。最糟糕的是:当我使用背景时,线条根本不显示,是的,我正在以正确的顺序绘制它......

导入和渲染图像的代码:

Constructor(){
    TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("data/texture.atlas"));
    AtlasRegion region = atlas.findRegion("path");
    Sprite sprite = new Sprite(region);
}

………………………………………………………………………………………………………………………………………………

@Override
public void render() {
    Gdx.gl.glClearColor(255, 255, 255, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    batch.begin();
    background.draw(batch); // drawing the background

    drawing.draw(); // drawing the lines
    drawObjects(); // drawing some pictures
    batch.end();
}

但是当我删除用于渲染背景和图片的代码时,线条会以正确的颜色显示出来......

请帮忙!!

编辑:用看起来像这样的东西绘图ShapeRenderer(不必把所有东西都放进去):

public void draw() {
    shaperenderer.begin(ShapeType.Line);
    shaperenderer.setColor(Color.RED);
    shaperenderer.line(1, 1, 100, 100);
    shaperenderer.end();
}
4

1 回答 1

11

您不能嵌套依赖于 OpenGL 上下文的对象。具体来说,您将 a 嵌套ShapeRenderer.begin()在 a 中SpriteBatch.begin()。如果您将渲染更改为如下所示:

batch.begin();
background.draw(batch); // drawing the background
batch.end(); // end spritebatch context to let ShapeRenderer in

drawing.draw(); // drawing the lines (with ShapeRenderer)

batch.begin(); 
drawObjects(); // drawing some pictures
batch.end();
于 2013-03-04T22:49:43.427 回答