Пример #1
0
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            switch (effectType)
            {
            case EffectType.Default:
                DrawModel(model, world, view, projection);
                break;

            case EffectType.Ambient:
                DrawModelWithAmbientEffect(model, world, view, projection);
                break;

            case EffectType.Diffuse:
                DrawModelWithDiffuseEffect(model, world, view, projection);
                break;

            case EffectType.Specular:
                DrawModelWithSpecularEffect(model, world, view, projection);
                break;

            case EffectType.Textured:
                DrawModelWithTexturedEffect(model, world, view, projection);
                break;

            case EffectType.GrayScale:
                DrawModelWithGrayScaleEffect(model, world, view, projection);
                break;

            case EffectType.BumpMap:
                DrawModelWithBumpMapEffect(model, world, view, projection);
                break;

            case EffectType.SkyBox:
                RasterizerState originalRasterizerState = graphics.GraphicsDevice.RasterizerState;
                RasterizerState rasterizerState         = new RasterizerState();
                rasterizerState.CullMode = CullMode.None;
                graphics.GraphicsDevice.RasterizerState = rasterizerState;

                skybox.Draw(view, projection, cameraLocation);

                graphics.GraphicsDevice.RasterizerState = originalRasterizerState;

                DrawModelWithTexturedEffect(model, world, view, projection);
                break;

            case EffectType.Reflection:
                RasterizerState rOriginalRasterizerState = graphics.GraphicsDevice.RasterizerState;
                RasterizerState rRasterizerState         = new RasterizerState();
                rRasterizerState.CullMode = CullMode.None;
                graphics.GraphicsDevice.RasterizerState = rRasterizerState;

                skybox.Draw(view, projection, cameraLocation);

                graphics.GraphicsDevice.RasterizerState = rOriginalRasterizerState;

                DrawModelWithReflectionEffect(model, world, view, projection);
                break;

            case EffectType.Transparency:
                RasterizerState tOriginalRasterizerState = graphics.GraphicsDevice.RasterizerState;
                RasterizerState tRasterizerState         = new RasterizerState();
                tRasterizerState.CullMode = CullMode.None;
                graphics.GraphicsDevice.RasterizerState = tRasterizerState;

                skybox.Draw(view, projection, cameraLocation);

                graphics.GraphicsDevice.RasterizerState = tOriginalRasterizerState;

                graphics.GraphicsDevice.BlendState = BlendState.AlphaBlend;
                DrawModelWithTransparencyEffect(model, world, view, projection);
                graphics.GraphicsDevice.BlendState = BlendState.Opaque;
                break;
            }

            hudManager.Draw(gameTime);

            base.Draw(gameTime);
        }