using ANX.Framework.Graphics; using ANX.Framework.NonXNA; using ANX.RenderSystem.Windows.Metro.Shader; using Dx11 = SharpDX.Direct3D11; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.RenderSystem.Windows.Metro { public class EffectPass_Metro : INativeEffectPass { #region Private private ExtendedShaderPass nativePass; private Effect parentEffect; private Dx11.VertexShader vertexShader; private Dx11.PixelShader pixelShader; #endregion #region Public public string Name { get; private set; } public EffectPass Pass { get; private set; } #endregion #region Constructor public EffectPass_Metro(Effect setParentEffect, ExtendedShaderPass setNativePass) { Name = setNativePass.Name; nativePass = setNativePass; parentEffect = setParentEffect; Pass = new EffectPass(parentEffect); } #endregion #region BuildLayout public Dx11.InputLayout BuildLayout(Dx11.Device d3dDevice, Dx11.InputElement[] elements) { return new Dx11.InputLayout(d3dDevice, nativePass.VertexCode, elements); } #endregion #region Apply public void Apply(NativeDxDevice device) { if (vertexShader == null) vertexShader = new Dx11.VertexShader(device.NativeDevice, nativePass.VertexCode); if (pixelShader == null) pixelShader = new Dx11.PixelShader(device.NativeDevice, nativePass.PixelCode); device.NativeContext.VertexShader.Set(vertexShader); device.NativeContext.PixelShader.Set(pixelShader); } #endregion } }