private void DrawHorizontalLine(IRenderTarget renderTarget, int y, int x1, int x2, Color color, Func <float, float, float> plan) { if (y >= 0 && y < renderTarget.Height) { if (x1 > x2) { Utils.Exchange(ref x1, ref x2); } if (x2 >= 0 && x1 < renderTarget.Width) { if (x1 < 0) { x1 = 0; } if (x2 >= renderTarget.Width) { x2 = renderTarget.Width - 1; } if (x1 <= x2) { for (int x = x1; x < x2; ++x) { float z = plan(x, y); if (z > renderTarget.GetDepth(x, y)) { renderTarget[x, y] = color; renderTarget.SetDepth(x, y, z); } } } } } }