Libgdx 绘制矩形,并在批处理中查看它,无需任何纹理

Libgdx 绘制矩形,并在批处理中查看它,无需任何纹理,libgdx,game-engine,Libgdx,Game Engine,我正在做一个长方形: rect = new Rectangle(); rect.x = 40; rect.y = 100; rect.setSize(100,100); 然后在矩形的位置上绘制一些纹理,如: batch.draw(myTexture, rect.x , rect.y, rect.width, rect.height); 现在我要做的就是看到矩形的形状,就像我必须看到一些边界一样,这样我才能看到我的矩形边界和纹理。我需要这个来调试,因为纹理很复杂,比如说背景是透明的,所以我想消

我正在做一个长方形:

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();
我原以为上面的代码可以帮助我绘制纹理以及看到矩形,但结果我只能看到矩形的边界,而看不到纹理

以下是输出:

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

为了清楚起见,我想看到纹理正上方的ShaperEnder,并且能够看到它们两个,所以我找到了答案

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

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

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处绘制ShaperEnder

解决办法是:

要单独绘制ShaperEnder,而不是在
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();

你试过两者都用吗,首先使用普通SpriteBatch绘制纹理,然后使用ShaperEnder绘制矩形?是的,我尝试了这两种方法,ShaperEnder使用批处理完全覆盖绘制纹理,这是因为ShaperEnder代码是在将纹理绘制到批处理后编写的,但因为我在ShaperEnder i中使用了line ShapeType我想我可能会看到它们,但显然不是这样。在形状渲染器调用任何绘制之前,您可能需要启用混合以允许透明度。Gdx.gl.glEnable(GL10.gl_混合物);GL10.gl.glBlendFunc(GL10.gl_SRC_ALPHA,GL10.gl_ONE_减去SRC_ALPHA);渲染形状Gdx.gl.glDisable(GL10.gl\u混合);我已经做到了。让我添加输出屏幕截图。我只是在运行时用pixmap创建了纹理,而不是在加载文件或制作新图像时弄乱,但是是的,图像通常是用spriteBatch绘制的,然后用ShaperEnder绘制边框,两者都显示出来。此代码位于pastebin()上