예제 #1
0
        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");
        }
예제 #2
0
        /// <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);
        }
예제 #4
0
        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");
        }
예제 #6
0
        /// <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();
            }
        }