ShapeRenderer Filled模式仅渲染轮廓:填充带边框三角形失败求助
解决LibGDX ShapeRenderer绘制带轮廓填充三角形的问题
你的核心问题是在ShapeType.Filled模式下错误使用了line()方法——这个模式下line()依然只会绘制线条,不会生成填充区域,导致你看到的"填充"其实是蓝色线条,和后续的灰色线条重叠后只能显示后绘制的那一层。
修正方案很简单:在填充模式下用triangle()方法绘制完整的填充三角形,再在线条模式下绘制轮廓即可。
修正后的代码:
shape.projectionMatrix = batch?.projectionMatrix shape.transformMatrix = batch?.transformMatrix // 绘制蓝色填充三角形 shape.begin(ShapeRenderer.ShapeType.Filled) shape.setColor(0f, 0f, 1f, 1f) shape.triangle( x - 32f, y - 32f, x + 32f, y, x - 32f, y + 32f ) shape.end() // 绘制灰色轮廓 shape.begin(ShapeRenderer.ShapeType.Line) shape.setColor(.25f, .25f, .25f, 1f) // 这里也可以用triangle方法直接生成轮廓,和三条line效果一致 shape.triangle( x - 32f, y - 32f, x + 32f, y, x - 32f, y + 32f ) shape.end()
额外提示:如果觉得轮廓线条太细,可以在Line模式开始前调用shape.setLineWidth(2f)(数值按需调整),不过这个方法需要OpenGL支持,多数平台默认都能正常使用。
内容的提问来源于stack exchange,提问作者chrispytoes
相关产品推荐
相关产品推荐

