You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:37:32