public ConvexHull(Renderer renderer, Mesh polygonGeometry) { if (renderer == null) throw new ArgumentNullException("renderer", "Can't create a ConvexHull with a null renderer."); if (polygonGeometry == null) throw new ArgumentNullException("polygonGeometry", "Can't create a ConvexHull without a valid " + "mesh."); this.renderer = renderer; this.polygonGeometry = polygonGeometry; effect = GlobalResourceCache.CreateEffectFromFile(renderer, "Effect Files\\Dynamic2DLightingEffect.fx"); }
/// <summary> /// Creates an effect from a file. If the effect has already been created, the cached version /// is returned. /// </summary> public static Effect CreateEffectFromFile(Renderer renderer, string filename) { // Search cache first foreach (string cachedFilename in effectCache.Keys) { if (StringHelper.CaseInsensitiveCompare(cachedFilename, filename)) return effectCache[cachedFilename] as Effect; } Effect newEffect = new Effect(renderer, filename); effectCache.Add(filename, newEffect); return newEffect; }
/// <summary> /// Initializes the game. Loads all resources. /// </summary> protected override void InitializeGame() { Cursor.Hide(); mouse = new MouseDevice(this); renderer.ProjectionMode = ProjectionMode.Orthogonal; renderer.ViewMatrix = Matrix.LookAtLH(new Vector3(0, 0, 5.0f), new Vector3(), new Vector3(0, 1, 0)); effect = GlobalResourceCache.CreateEffectFromFile(renderer, "Effect Files\\Dynamic2DLightingEffect.fx"); rectMesh = Mesh.Rectangle(renderer, Color.White, renderer.FullscreenSize.Width, renderer.FullscreenSize.Height, 1.0f); material = GlobalResourceCache.CreateMaterialFromFile(renderer, "Materials\\roughWallMaterial.xml"); light = new Light(renderer, 350, 1.0f, new Vector2(), Color.Red); sceneImage = new Texture(renderer, renderer.FullscreenSize.Width, renderer.FullscreenSize.Height, true); lightMesh = Mesh.Circle(renderer, Color.Yellow, Color.Yellow, 6, 16); bloomPostProcessor = new BloomPostProcessor(renderer); bloomPostProcessor.Blur = 3.5f; bloomPostProcessor.BloomScale = 1.5f; bloomPostProcessor.BrightPassThreshold = 0.4f; poly1 = new ConvexHull(renderer, Mesh.Circle(renderer, Color.Blue, Color.Blue, 65, 8)); poly1.Position = new Vector2(-150.0f, 150.0f); poly2 = new ConvexHull(renderer, Mesh.Circle(renderer, Color.Red, Color.Purple, 50, 4)); poly2.Position = new Vector2(200.0f, 0.0f); poly3 = new ConvexHull(renderer, Mesh.Circle(renderer, Color.SaddleBrown, Color.SeaGreen, 60, 32)); poly3.Position = new Vector2(-250.0f, -200.0f); this.KeyDown += new KeyEventHandler(OnKeyDown); }
public ConvexHull(Renderer renderer, Mesh polygonGeometry, Vector2 position, float rotation, float size) { if (renderer == null) throw new ArgumentNullException("renderer", "Can't create a ConvexHull with a null renderer."); if (polygonGeometry == null) throw new ArgumentNullException("polygonGeometry", "Can't create a ConvexHull without a valid " + "mesh."); this.renderer = renderer; this.polygonGeometry = polygonGeometry; this.position = position; this.rotation = rotation; this.size = size; effect = GlobalResourceCache.CreateEffectFromFile(renderer, "Effect Files\\Dynamic2DLightingEffect.fx"); CalculateWorldMatrix(); }
/// <summary> /// Initializes the BloomPostProcessor. /// </summary> public BloomPostProcessor(Renderer renderer) { if (renderer == null) throw new ArgumentNullException("renderer", "Can't create the BloomPostProcessor with a " + "null Renderer reference."); this.renderer = renderer; brightPassTex = new Texture(renderer, renderer.FullscreenSize.Width / 2, renderer.FullscreenSize.Height / 2, true); blurHorizontalTex = new Texture(renderer, renderer.FullscreenSize.Width / 2, renderer.FullscreenSize.Height / 2, true); blurVerticalTex = new Texture(renderer, renderer.FullscreenSize.Width / 2, renderer.FullscreenSize.Height / 2, true); finalBloomImage = new Texture(renderer, renderer.FullscreenSize.Width, renderer.FullscreenSize.Height, true); fullscreenQuad = Mesh.Rectangle(renderer, Color.Black, renderer.FullscreenSize.Width, renderer.FullscreenSize.Height); bloomEffect = GlobalResourceCache.CreateEffectFromFile(renderer, "Effect Files\\Bloom.fx"); }
/// <summary> /// Begins rendering with an effect. If 'effect' is null, then the fixed-function pipeline is used. /// </summary> public void Begin(Effect effect) { //device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0); device.BeginScene(); if (effect != null) { currentEffect = effect; currentEffect.BeginTechnique(); } }