绘制矩形并在没有任何纹理的情况下批量查看

Draw Rectangle and see it on batch without any texture

我正在制作一个矩形 :

rect = new Rectangle();
rect.x = 40;
rect.y = 100;
rect.setSize(100,100);

然后在矩形的位置绘制一些纹理,如:

batch.draw(myTexture, rect.x , rect.y, rect.width, rect.height);

现在我想做的也是看到矩形的形状,就像我必须看到一些边界,这样我才能看到我的矩形边界和我的纹理。我需要这个用于调试目的,因为纹理很复杂,比如背景是透明的,所以我想从那些地方消除碰撞,这就是为什么我想如果我能同时看到矩形和精灵,那就太好了。

尽管我尝试这样做:

shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(Color.RED);
shapeRenderer.rect(0,0,100,100);
shapeRenderer.end();

我认为上面的代码可以帮助我绘制纹理以及看到矩形,但结果我只能看到矩形的边界,而看不到纹理。

这是输出:

在图片中,您可以看到一个红色的矩形,这是我尝试调试我的栏的地方(黄色的栏也应该显示在这里)但是我的黄色没有显示为这个红色-边界矩形与我的条重叠。

明确地说,我想看到纹理正上方的 shapeRenderer 并且能够看到它们两者

所以我找到了答案,

如你所知,我想在我的纹理上显示一个矩形,这样我就可以同时看到我的纹理和我的 shapeRenderer 形状,但我只能看到我的形状而不是纹理。

问题是我正在做的是开始批处理,在里面我编写了用于绘制批处理的代码以及用于将 shapeRenderer 绘制到批处理的代码,如下所示:

batch.begin();
batch.draw(texture,0,0,0,0);
shapeRenderer.begin();
shapeRenderer.rect(0,0,0,0);
shapeRenderer.end();
batch.end();

上面的代码替换了我的纹理,因为它只能在坐标 0,0 处绘制一个东西,所以首先它在 0,0 处绘制纹理,然后在 0,0 处绘制 shaperenderer。

解决方案是:

要单独绘制 shapeRenderer 而不是在 batch.begin()batch.end() 内,例如:

batch.begin();
batch.draw(texture,0,0,0,0);
batch.end();

shapeRenderer.begin();
shapeRenderer.rect(0,0,0,0);
shapeRenderer.end();