Java 如何在Libgdx中渲染多个形状?
我使用for循环创建了一组矩形,然后将它们添加到数组列表中。我教过,渲染与从box2d渲染用户数据的方式类似Java 如何在Libgdx中渲染多个形状?,java,libgdx,shape-rendering,Java,Libgdx,Shape Rendering,我使用for循环创建了一组矩形,然后将它们添加到数组列表中。我教过,渲染与从box2d渲染用户数据的方式类似 sr.setProjectionMatrix(camera.combined); sr.begin(ShapeRenderer.ShapeType.Filled); for(Rectangle r : rectangles) sr.rect(r.x, r.y, r.width, r.height); sr.end(); 问题是在fro循环结束后,矩形不再被
sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeRenderer.ShapeType.Filled);
for(Rectangle r : rectangles)
sr.rect(r.x, r.y, r.width, r.height);
sr.end();
问题是在fro循环结束后,矩形不再被渲染,我知道这是因为您没有渲染实际的矩形,而只是使用shapeRenderer使用矩形的属性绘制形状。有没有类似于渲染精灵的方法 在LibGDX中,Sprite类是专门为使用SpriteBatch进行渲染而设计的。它包含一个实际的数据数组,可以直接复制到SpriteBatch的网格数据数组中。这就是它有自己的
draw
方法的原因,与TextureRegion不同。Sprite中的这个备份数据数组使它有可能更快地绘制,因为它的一些数据只有在移动时才需要重新计算
ShaperEnder不提供任何直接传递网格顶点数据数组的方法。矩形类不是专门为渲染而设计的。如果您只是想寻找一种更简单的方法来编写绘图代码,那么可以将矩形子类化,以添加一种方便的方法,直接使用ShaperEnder来绘制矩形
public class MyRectangle extends Rectangle {
//... constructors
public void draw (ShapeRenderer shapeRenderer){
shapeRenderer.rect(x, y, width, height);
}
}
这与渲染精灵的方式完全相同。您必须在每次调用
render()
时渲染它们,因为屏幕每帧都会重新绘制,就像SpriteBatch一样。我知道,但在形状中,您不会渲染实际的矩形sr.rect(r.x,r.y,r.width,r.height)。在sprite中,可以像下面这样渲染实际的sprite:sprite.draw(批处理)。您只需获取矩形的属性,ShaperEnder就可以绘制形状。但不是实际的矩形形状。