在绘制模型实例的tilemap后,Libgdx shaperenderer绘制黑色而不是红色

时间:2013-12-16 19:23:00

标签: java colors libgdx renderer

您好我正在使用来自libgdx的屏幕,我正在尝试创建一个战斗场景,其中包括一张地图。地图只是一个Tiles数组,每个tile包含我创建的各个块之一的ModelInstance。地图绘制精美,但在我的地图中我需要突出显示所选的图块。再次,它的工作非常漂亮,除了shaperenderer不断绘制线条而不是我设置的任何颜色。继承我的屏幕渲染功能:

@Override
public void render(float delta) {
    camController.update();
    pCam.update();
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    //Gdx.gl.glEnable(GL10.GL_LIGHTING | GL10.GL_GENERATE_MIPMAP
    //      | GL10.GL_BLEND);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    Gdx.gl.glLineWidth(4);

    batch.begin(pCam);
    map.render(batch, env);
    batch.end();

    renderer.setProjectionMatrix(pCam.combined);
    renderer.begin(ShapeType.Line);
    renderer.setColor(Color.RED);
    map.highlightSelectedTile(renderer);
    renderer.end();
}

格言般的呼唤只是我尝试各种各样的事情来试图解决这个问题。

地图渲染和高亮显示功能如下:

public void render(ModelBatch batch, Environment env) {
    for (EncounterMapTile tile : tiles) {
        tile.render(batch, env);
    }
}
public void highlightSelectedTile(ShapeRenderer renderer) {
    if (selectedTile != null) {
        Vector3[] pos = selectedTile.getBounds().getCorners();
        renderer.box(pos[4].x, pos[4].y, pos[4].z + .1f, cellWidth,
                cellHeight, 0);
    }
}

最后是mapTile的渲染:

public void render(ModelBatch batch, Environment env) {
    batch.render(instance, env);
}

所以逻辑上我发现这没什么不对。我挖出的所有信息都建议确保你没有嵌套渲染器调用batch.begin / end等等。但老实说,我似乎无法弄清楚为什么当使用spritebatches这工作,但在使用modelInstances的3d工作时,它不会保存颜色。我的印象是,shaperenderer与批次完全分开......帮助?

0 个答案:

没有答案