LibGDX(OpenGL)中ShapeRender的宽高比

时间:2015-05-17 12:36:39

标签: java opengl libgdx viewport aspect-ratio

在LibGDX中我使用的是一个产生10x10平方的ShapeRenderer。为了保持宽高比,我已将ExtendedViewport应用于OrthographicCamera并将舞台设置为ExtendedViewport。

public class Game extends ApplicationAdapter {  

private Viewport viewport;
private Stage stage;
private Camera camera;


@Override
public void create () {

camera = new OrthographicCamera(800, 480);
viewport = new ExtendViewport(800, 480, camera);
stage = new Stage(viewport);

在render()中,我调用一个shaperenderer,它应该生成一个正方形,但渲染一个y拉伸的矩形。

        shapeRenderer.begin(ShapeType.Filled);
        shapeRenderer.identity();
        shapeRenderer.setColor( Colors.get(square.color));          
        shapeRenderer.rect(square.x, square.y, square.width, square.height);
        shapeRenderer.end();

我猜这个问题可能是因为ShapeRenderer没有在舞台上注册。如果我理解正确,只有演员可以在舞台上表演,我不能添加原始形状。

我有相当简单的图形对象出现和消失。是否可以避免使用舞台并保持纵横比或者我必须将ShapeRender放入演员?我想使用ExtendedViewport而不是创建我自己的方法。

编辑: ExtendViewport中似乎存在错误。 FitViewport不会拉伸对象。

1 个答案:

答案 0 :(得分:1)

在shapeRenderer()。begin之前,调用shapeRenderer()。setProjectionMatrix(camera.combined);这对于SpriteBatches也是必需的。