static SpriteContext() { XScalingInterpolator = new Interpolator(); XScalingInterpolator.SetNumberOfInterpolationPoints(1); YScalingInterpolator = new Interpolator(); YScalingInterpolator.SetNumberOfInterpolationPoints(1); }
static Triangle() { FlatInterpolator = new Interpolator(); FlatInterpolator.SetNumberOfInterpolationPoints(4); GouraudInterpolator = new Interpolator(); GouraudInterpolator.SetNumberOfInterpolationPoints(12); TextureInterpolator = new Interpolator(); TextureInterpolator.SetNumberOfInterpolationPoints(8); }
static Triangle() { FlatInterpolator = new Interpolator(); FlatInterpolator.SetNumberOfInterpolationPoints(4); GouraudInterpolator = new Interpolator(); GouraudInterpolator.SetNumberOfInterpolationPoints(12); TextureInterpolator = new Interpolator(); TextureInterpolator.SetNumberOfInterpolationPoints(8); }
static SimpleSpanRenderer() { DepthInterpolator = new Interpolator(); DepthInterpolator.SetNumberOfInterpolationPoints(1); DepthInterpolator.InitializePoints(DefaultSpanLength); GouraudInterpolator = new Interpolator(); GouraudInterpolator.SetNumberOfInterpolationPoints(5); GouraudInterpolator.InitializePoints(DefaultSpanLength); TextureInterpolator = new Interpolator(); TextureInterpolator.SetNumberOfInterpolationPoints(3); TextureInterpolator.InitializePoints(DefaultSpanLength); }
static SimpleSpanRenderer() { DepthInterpolator = new Interpolator(); DepthInterpolator.SetNumberOfInterpolationPoints(1); DepthInterpolator.InitializePoints(DefaultSpanLength); GouraudInterpolator = new Interpolator(); GouraudInterpolator.SetNumberOfInterpolationPoints(5); GouraudInterpolator.InitializePoints(DefaultSpanLength); TextureInterpolator = new Interpolator(); TextureInterpolator.SetNumberOfInterpolationPoints(3); TextureInterpolator.InitializePoints(DefaultSpanLength); }
private static Span?GetSpan(int interpolationIndex, Interpolator interpolator, Vertex vertexA, bool useTexture) { var y = ((int)vertexA.TranslatedScreenCoordinates.Y) + interpolationIndex; var xstart = interpolator.Points[0].InterpolatedValues[interpolationIndex]; var xend = interpolator.Points[1].InterpolatedValues[interpolationIndex]; var ustart = 0f; var vstart = 0f; var uend = 0f; var vend = 0f; if (useTexture) { ustart = interpolator.Points[4].InterpolatedValues[interpolationIndex]; uend = interpolator.Points[5].InterpolatedValues[interpolationIndex]; vstart = interpolator.Points[6].InterpolatedValues[interpolationIndex]; vend = interpolator.Points[7].InterpolatedValues[interpolationIndex]; } var swap = false; if (xstart > xend) { var temp = xstart; xstart = xend; xend = temp; swap = true; temp = ustart; ustart = uend; uend = temp; temp = vstart; vstart = vend; vend = temp; } xend += 0.5f; var length = xend - xstart; var absLength = (int)System.Math.Round((double)length + 0.5); if (absLength >= 1) { var span = new Span { Y = y, XStart = (int)xstart, XEnd = (int)xend, UStart = ustart, UEnd = uend, VStart = vstart, VEnd = vend, Length = absLength, Swap = swap }; return(span); } return(null); }
private static Span? GetSpan(int interpolationIndex, Interpolator interpolator, Vertex vertexA, bool useTexture) { var y = ((int)vertexA.TranslatedScreenCoordinates.Y) + interpolationIndex; var xstart = interpolator.Points[0].InterpolatedValues[interpolationIndex]; var xend = interpolator.Points[1].InterpolatedValues[interpolationIndex]; var ustart = 0f; var vstart = 0f; var uend = 0f; var vend = 0f; if (useTexture) { ustart = interpolator.Points[4].InterpolatedValues[interpolationIndex]; uend = interpolator.Points[5].InterpolatedValues[interpolationIndex]; vstart = interpolator.Points[6].InterpolatedValues[interpolationIndex]; vend = interpolator.Points[7].InterpolatedValues[interpolationIndex]; } var swap = false; if (xstart > xend) { var temp = xstart; xstart = xend; xend = temp; swap = true; temp = ustart; ustart = uend; uend = temp; temp = vstart; vstart = vend; vend = temp; } xend += 0.5f; var length = xend - xstart; var absLength = (int)System.Math.Round((double)length + 0.5); if (absLength >= 1) { var span = new Span { Y = y, XStart = (int)xstart, XEnd = (int)xend, UStart = ustart, UEnd = uend, VStart = vstart, VEnd = vend, Length = absLength, Swap = swap }; return span; } return null; }