LibGDX (OpenGL) 中 ShapeRender 的纵横比
Aspect Ratio for ShapeRender in LibGDX (OpenGL)
在 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 不拉伸对象。
在shapeRenderer().begin之前调用shapeRenderer().setProjectionMatrix(camera.combined);这对于 SpriteBatches 也是必需的。
在 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 不拉伸对象。
在shapeRenderer().begin之前调用shapeRenderer().setProjectionMatrix(camera.combined);这对于 SpriteBatches 也是必需的。