gpt4 book ai didi

java - LIBGDX:如何使用 shaperenderer 绘制填充多边形?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:57:10 29 4
gpt4 key购买 nike

我已经使用顶点数组定义了一个形状:

float[] points =  new float[]{50,60,50,70,60,70, 60,60,50,60};

我在这里画这个:

shapeRenderer.polygon(floatNew);

这只是给出了形状的轮廓。
如何用颜色填充它?
谢谢

最佳答案

ShapeRenderer 目前支持绘制多边形(按线),不支持填充。

此代码在三角形上裁剪多边形,然后分别绘制每个三角形。

像这样编辑 ShapeRenderer.java:

EarClippingTriangulator ear = new EarClippingTriangulator();

public void polygon(float[] vertices, int offset, int count)
{
if (shapeType != ShapeType.Filled && shapeType != ShapeType.Line)
throw new GdxRuntimeException("Must call begin(ShapeType.Filled) or begin(ShapeType.Line)");
if (count < 6)
throw new IllegalArgumentException("Polygons must contain at least 3 points.");
if (count % 2 != 0)
throw new IllegalArgumentException("Polygons must have an even number of vertices.");

check(shapeType, null, count);

final float firstX = vertices[0];
final float firstY = vertices[1];
if (shapeType == ShapeType.Line)
{
for (int i = offset, n = offset + count; i < n; i += 2)
{
final float x1 = vertices[i];
final float y1 = vertices[i + 1];

final float x2;
final float y2;

if (i + 2 >= count)
{
x2 = firstX;
y2 = firstY;
} else
{
x2 = vertices[i + 2];
y2 = vertices[i + 3];
}

renderer.color(color);
renderer.vertex(x1, y1, 0);
renderer.color(color);
renderer.vertex(x2, y2, 0);

}
} else
{
ShortArray arrRes = ear.computeTriangles(vertices);

for (int i = 0; i < arrRes.size - 2; i = i + 3)
{
float x1 = vertices[arrRes.get(i) * 2];
float y1 = vertices[(arrRes.get(i) * 2) + 1];

float x2 = vertices[(arrRes.get(i + 1)) * 2];
float y2 = vertices[(arrRes.get(i + 1) * 2) + 1];

float x3 = vertices[arrRes.get(i + 2) * 2];
float y3 = vertices[(arrRes.get(i + 2) * 2) + 1];

this.triangle(x1, y1, x2, y2, x3, y3);
}
}
}

关于java - LIBGDX:如何使用 shaperenderer 绘制填充多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102692/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com