java - LibGDX (OpenGL) 中 ShapeRender 的纵横比

标签 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 轴拉伸(stretch)的矩形。

        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 没有在舞台上注册。如果我没理解错的话,只有 Actor 才能上台表演,我不能添加原始形状。

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

编辑:ExtendViewport 中似乎有错误。 FitViewport 不会拉伸(stretch)对象。

最佳答案

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

关于java - LibGDX (OpenGL) 中 ShapeRender 的纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286923/

相关文章:

java - LibGdx:我在加载大背景图像时遇到问题。我收到一条错误消息,说它不是两个正方形。有没有解决的办法?

java - 如何将 "levels"分配给无环有向图的顶点?

java - 抽象 Action 的实现

opengl - 在 opengl 中更新制服的时间

c - 何时使用 OpenGL 显示列表?

java - LibGDX 平铺单元之间的随机空间

java - libgdx & kryonet : threads

java - 将网页转换为 PDF 或图像

java - 具有自定义布局的 AlertDialog 未显示

c++ - # include <GL/glut.h> 在 Xcode 中找不到文件