Add two-colour line rendering to RgbaColorRenderer.
This commit is contained in:
@@ -45,6 +45,34 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DrawLine(float2 start, float2 end, float width, Color startColor, Color endColor)
|
||||||
|
{
|
||||||
|
renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
|
if (nv + 4 > renderer.TempBufferSize)
|
||||||
|
Flush();
|
||||||
|
|
||||||
|
var delta = (end - start) / (end - start).Length;
|
||||||
|
var corner = width / 2 * new float2(-delta.Y, delta.X);
|
||||||
|
|
||||||
|
startColor = Util.PremultiplyAlpha(startColor);
|
||||||
|
var sr = startColor.R / 255.0f;
|
||||||
|
var sg = startColor.G / 255.0f;
|
||||||
|
var sb = startColor.B / 255.0f;
|
||||||
|
var sa = startColor.A / 255.0f;
|
||||||
|
|
||||||
|
endColor = Util.PremultiplyAlpha(endColor);
|
||||||
|
var er = endColor.R / 255.0f;
|
||||||
|
var eg = endColor.G / 255.0f;
|
||||||
|
var eb = endColor.B / 255.0f;
|
||||||
|
var ea = endColor.A / 255.0f;
|
||||||
|
|
||||||
|
vertices[nv++] = new Vertex(start - corner + Offset, sr, sg, sb, sa);
|
||||||
|
vertices[nv++] = new Vertex(start + corner + Offset, sr, sg, sb, sa);
|
||||||
|
vertices[nv++] = new Vertex(end + corner + Offset, er, eg, eb, ea);
|
||||||
|
vertices[nv++] = new Vertex(end - corner + Offset, er, eg, eb, ea);
|
||||||
|
}
|
||||||
|
|
||||||
public void DrawLine(float2 start, float2 end, float width, Color color)
|
public void DrawLine(float2 start, float2 end, float width, Color color)
|
||||||
{
|
{
|
||||||
renderer.CurrentBatchRenderer = this;
|
renderer.CurrentBatchRenderer = this;
|
||||||
|
|||||||
Reference in New Issue
Block a user