我正在使用libgdx开发一个新应用程序,并且在我的源代码中使用了shaperenderer类,但是由于我购买了新的平板电脑(Acer Iconia One 10 B3-A20),因此我的应用程序在调用后始终崩溃而没有显示任何错误“shaperenderer.end()”方法。即使当我创建一个简单的类(如以下类)时,我是否也缺少某些东西?

public class Test implements Screen {
    private ShapeRenderer shapeRenderer = new ShapeRenderer();

    @Override
    public void show() {

    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
        shapeRenderer.rect(30,30,200,200);
        shapeRenderer.end();

    }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        shapeRenderer.dispose();

    }
}

谢谢

编辑:

在将一些断点放入“shaperenderer.end()”方法中后,我注意到程序在调用“mesh.render()”方法后崩溃,尤其是当它调用Mesh类的“bind”方法(用于绑定(bind)着色器)。

正常吗

最佳答案

您需要首先在show方法上创建一个摄像机:

OrthographicCamera camera;
[...]
camera = new OrthographicCamera();
camera.setToOrtho(false);

在渲染方法上,在绘制之前设置projectionMatrix:
    camera.update();
    shapeRenderer.setProjectionMatrix(camera.combined);

关于java - Shaperenderer崩溃libgdx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35897671/

10-12 02:50