rendered paste body Generic.cPipelineElement3X<Vector3, Vector3>.ElementProcessor3X rasterizerProcessor = delegate(Vector3[] element)
{
Vector3 v1, v2, v3;
if ((element[0].Y < element[1].Y) && (element[0].Y < element[2].Y))
{
v1 = element[0];
if (element[1].Y < element[2].Y)
{
v2 = element[1];
v3 = element[2];
}
else
{
v2 = element[2];
v3 = element[1];
}
}
else if (element[1].Y < element[2].Y)
{
v1 = element[1];
if (element[0].Y < element[2].Y)
{
v2 = element[0];
v3 = element[2];
}
else
{
v2 = element[2];
v3 = element[0];
}
}
else
{
v1 = element[2];
if (element[1].Y < element[0].Y)
{
v2 = element[1];
v3 = element[0];
}
else
{
v2 = element[0];
v3 = element[1];
}
}
v1 = v1 * 200 + new Vector3(100, 100, 0.0f);
v2 = v2 * 200 + new Vector3(100, 100, 0.0f);
v3 = v3 * 200 + new Vector3(100, 100, 0.0f);
int currY = (int)Math.Round(v1.Y);
int goalY = (int)Math.Round(v2.Y);
float factor1 = (v2.X - v1.X) / (v2.Y - v1.Y);
float factor2 = (v3.X - v1.X) / (v3.Y - v1.Y);
while (currY < goalY)
{
int start = (int)(v1.X + ((float)currY - v1.Y) * factor1);
//Rasterizer.Output(new Vector3(start, currY, 0.0f));
int end = (int)(v1.X + ((float)currY - v1.Y) * factor2);
int count = start;
if (start < end)
while (count++ < end)
Rasterizer.Output(new Vector3(count, currY, 0.0f));
else if (end < start)
while (count-- > end)
Rasterizer.Output(new Vector3(count, currY, 0.0f));
currY++;
}
Rasterizer.Output(v1);
Rasterizer.Output(v2);
Rasterizer.Output(v3);
};