Libgdx OrthographicCamera缩放隐藏Shaperenderer的一部分

时间:2014-11-26 10:16:37

标签: android camera libgdx viewport

我正在尝试使用libgdx在Android上制作等轴测图。我基本上使用ShapeRenderer绘制形状并通过移动/缩放相机来处理手势。这是我的代码。

public class MyGdxGame extends ApplicationAdapter{

    private OrthographicCamera cam;
    private ShapeRenderer mShapeRenderer;
    private InputHandler mInputHandler;


    @Override
    public void create() {
        mShapeRenderer = new ShapeRenderer();
        mInputHandler = new AndroidInputHandler();
        Gdx.input.setInputProcessor(mInputHandler);
        Gdx.graphics.setContinuousRendering(false);
    }

    @Override
    public void render() {
        System.out.println("render()");

        mInputHandler.handleInput(cam);
        cam.update();

        // clearing scene
        Gdx.graphics.getGL20().glClearColor(1, 1, 1, 1);
        Gdx.graphics.getGL20().glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );


        //drawing updated scene
        mShapeRenderer.setProjectionMatrix(cam.combined);

        mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        mShapeRenderer.setColor( 0.95f, 0.95f, 0.95f,1);
        mShapeRenderer.rect(0, 0, 5.1f, 4.8f);
        mShapeRenderer.rect( 6.890f,24.014f,2.201f, 6f);
        mShapeRenderer.end();


    }

    @Override
    public void resize(int width, int height) {
        cam = new OrthographicCamera( 10f,10f * height / width);
        cam.position.set(5, 5, 7);
        cam.lookAt(0, 0, 0);
        Vector3 up =cam.position.cpy();
        up.nor();
        up.crs((new Vector3(-1, 1, 0)).nor());
        cam.up.set(up);
        cam.zoom=1f;
        cam.far=100000;
        cam.near=0;
    }

   ...
}

InputHandler是一个自定义类,可以处理手势,如缩放到缩放和相机转换。它只调用camera.translate(Vector3)和camera.zoom = new zoom。

我的问题是每当我捏缩放时,我的一些形状都会被剪掉。

预期图纸

Normal shapes

切割形状

enter image description here

我不知道这是从哪里来的。我认为我的视口发生了一些事情。我尝试修改基本缩放和相机视口大小,但我不了解视口宽度和高度的概念。

任何帮助都会被贬低。

由于

0 个答案:

没有答案