/// <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); }