Convert RgbaColorRenderer to TriangleList.
This commit is contained in:
@@ -30,7 +30,7 @@ namespace OpenRA.Graphics
|
|||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
this.shader = shader;
|
this.shader = shader;
|
||||||
vertices = new Vertex[renderer.TempBufferSize];
|
vertices = new Vertex[renderer.TempBufferSize];
|
||||||
renderAction = () => renderer.DrawBatch(vertices, nv, PrimitiveType.QuadList);
|
renderAction = () => renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Flush()
|
public void Flush()
|
||||||
@@ -49,7 +49,7 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
renderer.CurrentBatchRenderer = this;
|
renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
if (nv + 4 > renderer.TempBufferSize)
|
if (nv + 6 > renderer.TempBufferSize)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
var delta = (end - start) / (end - start).Length;
|
var delta = (end - start) / (end - start).Length;
|
||||||
@@ -70,14 +70,16 @@ namespace OpenRA.Graphics
|
|||||||
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(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);
|
||||||
|
vertices[nv++] = new Vertex(end + corner + Offset, er, eg, eb, ea);
|
||||||
vertices[nv++] = new Vertex(end - corner + Offset, er, eg, eb, ea);
|
vertices[nv++] = new Vertex(end - corner + Offset, er, eg, eb, ea);
|
||||||
|
vertices[nv++] = new Vertex(start - corner + Offset, sr, sg, sb, sa);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
if (nv + 4 > renderer.TempBufferSize)
|
if (nv + 6 > renderer.TempBufferSize)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
var delta = (end - start) / (end - start).Length;
|
var delta = (end - start) / (end - start).Length;
|
||||||
@@ -92,7 +94,9 @@ namespace OpenRA.Graphics
|
|||||||
vertices[nv++] = new Vertex(start - corner + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(start - corner + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(start + corner + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(start + corner + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(end + corner + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(end + corner + Offset, r, g, b, a);
|
||||||
|
vertices[nv++] = new Vertex(end + corner + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(end - corner + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(end - corner + Offset, r, g, b, a);
|
||||||
|
vertices[nv++] = new Vertex(start - corner + Offset, r, g, b, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -160,13 +164,15 @@ namespace OpenRA.Graphics
|
|||||||
var cd = closed || i < limit ? IntersectionOf(end - corner, dir, end - nextCorner, nextDir) : end - corner;
|
var cd = closed || i < limit ? IntersectionOf(end - corner, dir, end - nextCorner, nextDir) : end - corner;
|
||||||
|
|
||||||
// Fill segment
|
// Fill segment
|
||||||
if (nv + 4 > renderer.TempBufferSize)
|
if (nv + 6 > renderer.TempBufferSize)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
vertices[nv++] = new Vertex(ca + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(ca + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(cb + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(cb + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(cc + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(cc + Offset, r, g, b, a);
|
||||||
|
vertices[nv++] = new Vertex(cc + Offset, r, g, b, a);
|
||||||
vertices[nv++] = new Vertex(cd + Offset, r, g, b, a);
|
vertices[nv++] = new Vertex(cd + Offset, r, g, b, a);
|
||||||
|
vertices[nv++] = new Vertex(ca + Offset, r, g, b, a);
|
||||||
|
|
||||||
// Advance line segment
|
// Advance line segment
|
||||||
end = next;
|
end = next;
|
||||||
@@ -215,7 +221,7 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
renderer.CurrentBatchRenderer = this;
|
renderer.CurrentBatchRenderer = this;
|
||||||
|
|
||||||
if (nv + 4 > renderer.TempBufferSize)
|
if (nv + 6 > renderer.TempBufferSize)
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
color = Util.PremultiplyAlpha(color);
|
color = Util.PremultiplyAlpha(color);
|
||||||
@@ -227,7 +233,9 @@ namespace OpenRA.Graphics
|
|||||||
vertices[nv++] = new Vertex(a + Offset, cr, cg, cb, ca);
|
vertices[nv++] = new Vertex(a + Offset, cr, cg, cb, ca);
|
||||||
vertices[nv++] = new Vertex(b + Offset, cr, cg, cb, ca);
|
vertices[nv++] = new Vertex(b + Offset, cr, cg, cb, ca);
|
||||||
vertices[nv++] = new Vertex(c + Offset, cr, cg, cb, ca);
|
vertices[nv++] = new Vertex(c + Offset, cr, cg, cb, ca);
|
||||||
|
vertices[nv++] = new Vertex(c + Offset, cr, cg, cb, ca);
|
||||||
vertices[nv++] = new Vertex(d + Offset, cr, cg, cb, ca);
|
vertices[nv++] = new Vertex(d + Offset, cr, cg, cb, ca);
|
||||||
|
vertices[nv++] = new Vertex(a + Offset, cr, cg, cb, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FillEllipse(RectangleF r, Color color, int vertices = 32)
|
public void FillEllipse(RectangleF r, Color color, int vertices = 32)
|
||||||
|
|||||||
Reference in New Issue
Block a user