前回のClassLineを応用して
ブレゼンハムのアルゴリズムをUnity用に改変したものです。
全ての線を引いたあと、
Texture2D.Apply();
でテクスチャに反映されます
private Color DrawColor = Color.white;
private void DrawLine(Texture2D tex, ClassLine line)
{
Vector2 v = line.v;
int dx = (int)Mathf.Abs(v.x);
int dy = (int)Mathf.Abs(v.y);
int sx = (int)Mathf.Sign(v.x);
int sy = (int)Mathf.Sign(v.y);
int px = (int)line.p1.x;
int py = (int)line.p1.y;
if (dx > dy)
{
int err = -dx;
for (int i = 0; i < dx; i++)
{
tex.SetPixel(px, py, DrawColor);
px += sx;
err += 2 * dy;
if (err >= 0)
{
py += sy;
err = -2 * dx;
}
}
}
else
{
int err = -dy;
for (int i = 0; i < dy; i++)
{
tex.SetPixel(px, py, DrawColor);
py += sy;
err += 2 * dx;
if (err >= 0)
{
px += sx;
err = -2 * dy;
}
}
}
}