问题描述
我正在使用LibGDX,使用ModelBuilder#createRect
在3D空间中构造矩形,将其放置在3D环境中,并使用ModelBatch
进行渲染。一切正常。当两个矩形彼此靠近时,就会出现问题。似乎在一定深度范围内,实际上是在后面的一些矩形在前面渲染。
为帮助说明我的意思,下面是一些示例:
即使我们有2个矩形(灌木丛和图),它们在垂直方向上都相同,但是当模型实例彼此靠近时,即使矩形是平坦的,其中一个的一部分也会呈现在前面,而一个矩形应该完全在另一个的前面,而不是在图的前面的一小部分灌木。
在这里,我们有2个相交的矩形(墙和图)。我希望看到两个矩形之间有清晰的切口,但是我得到了一个楼梯。这会让我相信它会保留一个矩形的区域范围,即使一个矩形始终在该范围内,即使该范围内可能存在相交,也可能会忽略该矩形的某些部分,认为它不需要渲染它。
我相信这两个例子源于同一问题。
渲染矩形时,这是材质的代码。
material.set(BlendingAttribute(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA),FloatAttribute(AlphaTest,0.5f))
添加带有任意浮点数的FloatAttribute
似乎可以缓解问题,但不能完全缓解。 (上面的示例带有float属性。)
我正在使用Environment
中的ModelBatch
,com.badlogic.gdx.graphics.g3d
等来渲染矩形。
如何使用LibGDX正确渲染3D矩形?