public SurfacePreprocessor(SurfaceRenderer _renderer) { renderer = _renderer; cacheWidth = SurfaceRenderer.CACHE_WIDTH; cacheHeight = SurfaceRenderer.CACHE_HEIGHT; ColorCache = new int?[cacheWidth, cacheHeight]; VectorCache = new Vector[cacheWidth, cacheHeight]; }
public Renderer(List <Polygon> _polygons) { polygons = _polygons; directBitmap = new DirectBitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); polygonDrawer = new PolygonDrawer(directBitmap, polygons); surfaceRenderer = new SurfaceRenderer(DEFAULT_BACKGROUND, DEFAULT_LIGHT, DEFAULT_FUNCTION, DEFAULT_BUMPMAP); polygonFiller = new PolygonFiller(directBitmap, surfaceRenderer, polygons); }
private void PreprocessBackgroundWithLightColor() { Parallel.For(0, cacheWidth, x => { for (int y = 0; y < cacheHeight; ++y) { ColorCache[x, y] = SurfaceRenderer.RGB2Int( (int)(renderer.Background.R(x, y) * renderer.Light.R * 255), (int)(renderer.Background.G(x, y) * renderer.Light.G * 255), (int)(renderer.Background.B(x, y) * renderer.Light.B * 255) ); } }); }
public PolygonFiller(DirectBitmap _directBitmap, SurfaceRenderer _surfaceRenderer, List <Polygon> _polygons) { directBitmap = _directBitmap; surfaceRenderer = _surfaceRenderer; polygons = _polygons; }