java - ShapeRenderer LibGdx 不工作

标签 java libgdx

我不知道为什么 ShapeRenderer 对象没有在屏幕上绘制圆形。我尝试修改代码以包括建议,例如将 shaperenderer 对象的投影矩阵和变换矩阵更改为批处理矩阵,甚至在 shaperenderer.begin() 之前添加 batch.end() 。这是我的代码:

public void draw (Batch batch, float parentAlpha){
    super.draw(batch, parentAlpha);
    batch.end();
    shapeRend.setProjectionMatrix(batch.getProjectionMatrix());
    shapeRend.setTransformMatrix(batch.getTransformMatrix());
    float x = body.getWorldCenter().x;
    float y = body.getWorldCenter().y;
    shapeRend.translate(x, y, 0);


    shapeRend.begin(ShapeType.Filled);
    shapeRend.setColor(Color.RED);
    shapeRend.circle(0, 0, Constants.PLAYER_RADIUS);
    shapeRend.end();
    batch.begin();


}

除了 Contants.player_radius = 0.2 之外,我确实没有其他代码可以提供,这应该没有什么区别。我的世界渲染器(Box2D 物理)是可见的,但 shaperenderer 圆不存在。本来我没有放入translate函数,只是将x和y直接放入shapeRend.circle(x,y,r)方法调用中,但我只是测试不同的方式。任何的意见都将会有帮助。谢谢。

最佳答案

对于所有可能对我的问题感到困惑的人,我深表歉意。我发现出了什么问题。问题是我使用的是不同的正交相机,它有一个投影矩阵,它是左下角的一个小正方形。我未能将投影矩阵更改为较小的左角。

shapeRend.setProjectionMatrix(camera.combined);

批处理的投影矩阵未配置为相机的投影矩阵,这就是它失败的原因。

无论如何,我不再使用 shapeRenderer,因为我相信使用纹理更好。感谢所有回答的人。

关于java - ShapeRenderer LibGdx 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529956/

相关文章:

java - 函数传递每个整数 n 并打印将 n 存储为有符号整数所需的最小位数

java - 签署 JAR 以允许其类访问互联网

java - 构建器模式不起作用

java - 我需要分隔一个整数,然后在java中将数字相加

java - 如何通过我的应用程序将事件设置到设备日历?

java - 过滤器还是什么? -- 进入Spring应用程序之前检查文件

java - 将 Texture 转换为 FrameBuffer 并返回

java - 使用 libGDX 缩放和淡化启动屏幕以使其不被拉伸(stretch)的最佳方法是什么?

android-studio - 错误 : Failed to resolve: com. badlogicgames.gdx :gdx-backend-lwjgl:1. 6.5

libgdx - 如何向 libGDX 项目添加新平台?