protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            this.context = new SharpDXContext();
            this.renderer = new SceneRenderer(this.context);
            this.context.BindToControl(this.SwapChainPanel);
            this.context.Render += context_Render;
        }
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            this.context = new SharpDXContext();
            this.renderer = new SceneRenderer(this.context);
            this.context.Render += context_Render;

            this.context.BindToControl(this.DrawingSurface);
        }
        public SwapChainBackgroundPanelPage()
        {
            this.InitializeComponent();

            this.context = new SharpDXContext();
            this.renderer = new SceneRenderer(this.context);
            this.context.BindToControl(this.LayoutRoot);

            this.context.Render += context_Render;
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            //this.mediaEngine.Play();
            //this.mediaEngine.Load();
            // this.mediaEngine.GetNativeVideoSize(out width, out height);

            context = new SharpDXContext();
            context.Render += context_Render;
            context.DeviceReset += context_DeviceReset;
            context.BindToControl(this.Surface);

            DeviceMultithread mt = context.D3DDevice.QueryInterface<DeviceMultithread>();
            mt.SetMultithreadProtected(true);

            deviceManager = new DXGIDeviceManager();
            deviceManager.ResetDevice(context.D3DDevice);

            MediaEngineAttributes attr = new MediaEngineAttributes();
            attr.VideoOutputFormat = (int)SharpDX.DXGI.Format.B8G8R8A8_UNorm;
            attr.DxgiManager = deviceManager;

            this.mediaFactory = new MediaEngineClassFactory();
            this.mediaEngine = new MediaEngine(this.mediaFactory, attr, MediaEngineCreateFlags.None);
            // this.mediaEngineEx = this.mediaEngine.QueryInterface<MediaEngineEx>();
            this.mediaEngine.PlaybackEvent += mediaEngine_PlaybackEvent;

            this.mediaEngine.Source = Package.Current.InstalledLocation.Path + "/Assets/keloid.mp4";
            this.mediaEngine.Load();

            ushort[] indices = new ushort[]
            {
                0, 1, 2,
                2, 3, 0,
            };

            this.indexBuffer = SharpDX.Direct3D11.Buffer.Create<ushort>(this.context.D3DDevice, BindFlags.IndexBuffer, indices);

            float[] vertices = new float[]
            {
                                      // 3D coordinates              UV Texture coordinates
                                      -1.0f, -1.0f, -1.0f, 1.0f,     0.0f, 1.0f, // Front
                                      -1.0f,  1.0f, -1.0f, 1.0f,     0.0f, 0.0f,
                                       1.0f,  1.0f, -1.0f, 1.0f,     1.0f, 0.0f,
                                      -1.0f, -1.0f, -1.0f, 1.0f,     0.0f, 1.0f,
                                       1.0f,  1.0f, -1.0f, 1.0f,     1.0f, 0.0f,
                                       1.0f, -1.0f, -1.0f, 1.0f,     1.0f, 1.0f,

                                      -1.0f, -1.0f,  1.0f, 1.0f,     1.0f, 0.0f, // BACK
                                       1.0f,  1.0f,  1.0f, 1.0f,     0.0f, 1.0f,
                                      -1.0f,  1.0f,  1.0f, 1.0f,     1.0f, 1.0f,
                                      -1.0f, -1.0f,  1.0f, 1.0f,     1.0f, 0.0f,
                                       1.0f, -1.0f,  1.0f, 1.0f,     0.0f, 0.0f,
                                       1.0f,  1.0f,  1.0f, 1.0f,     0.0f, 1.0f,

                                      -1.0f, 1.0f, -1.0f,  1.0f,     0.0f, 1.0f, // Top
                                      -1.0f, 1.0f,  1.0f,  1.0f,     0.0f, 0.0f,
                                       1.0f, 1.0f,  1.0f,  1.0f,     1.0f, 0.0f,
                                      -1.0f, 1.0f, -1.0f,  1.0f,     0.0f, 1.0f,
                                       1.0f, 1.0f,  1.0f,  1.0f,     1.0f, 0.0f,
                                       1.0f, 1.0f, -1.0f,  1.0f,     1.0f, 1.0f,

                                      -1.0f,-1.0f, -1.0f,  1.0f,     1.0f, 0.0f, // Bottom
                                       1.0f,-1.0f,  1.0f,  1.0f,     0.0f, 1.0f,
                                      -1.0f,-1.0f,  1.0f,  1.0f,     1.0f, 1.0f,
                                      -1.0f,-1.0f, -1.0f,  1.0f,     1.0f, 0.0f,
                                       1.0f,-1.0f, -1.0f,  1.0f,     0.0f, 0.0f,
                                       1.0f,-1.0f,  1.0f,  1.0f,     0.0f, 1.0f,

                                      -1.0f, -1.0f, -1.0f, 1.0f,     0.0f, 1.0f, // Left
                                      -1.0f, -1.0f,  1.0f, 1.0f,     0.0f, 0.0f,
                                      -1.0f,  1.0f,  1.0f, 1.0f,     1.0f, 0.0f,
                                      -1.0f, -1.0f, -1.0f, 1.0f,     0.0f, 1.0f,
                                      -1.0f,  1.0f,  1.0f, 1.0f,     1.0f, 0.0f,
                                      -1.0f,  1.0f, -1.0f, 1.0f,     1.0f, 1.0f,

                                       1.0f, -1.0f, -1.0f, 1.0f,     1.0f, 0.0f, // Right
                                       1.0f,  1.0f,  1.0f, 1.0f,     0.0f, 1.0f,
                                       1.0f, -1.0f,  1.0f, 1.0f,     1.0f, 1.0f,
                                       1.0f, -1.0f, -1.0f, 1.0f,     1.0f, 0.0f,
                                       1.0f,  1.0f, -1.0f, 1.0f,     0.0f, 0.0f,
                                       1.0f,  1.0f,  1.0f, 1.0f,     0.0f, 1.0f,            };

            this.vertexBuffer = SharpDX.Direct3D11.Buffer.Create<float>(this.context.D3DDevice, BindFlags.VertexBuffer, vertices);
            this.bufferBinding = new VertexBufferBinding(this.vertexBuffer, sizeof(float) * 6, 0);

            var path = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;

            // Loads vertex shader bytecode
            var vertexShaderByteCode = NativeFile.ReadAllBytes(path + "\\MiniCubeTexture_VS.fxo");
            this.vertexShader = new VertexShader(this.context.D3DDevice, vertexShaderByteCode);

            this.inputLayout = new InputLayout(this.context.D3DDevice, vertexShaderByteCode, new[]
                    {
                new InputElement("POSITION", 0, SharpDX.DXGI.Format.R32G32B32A32_Float, 0, 0),
                new InputElement("TEXCOORD", 0, SharpDX.DXGI.Format.R32G32_Float, 16, 0)
                    });

            this.pixelShader = new PixelShader(this.context.D3DDevice, NativeFile.ReadAllBytes(path + "\\MiniCubeTexture_PS.fxo"));

            this.constantBuffer = new SharpDX.Direct3D11.Buffer(this.context.D3DDevice, Utilities.SizeOf<Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);

            this.sampler = new SamplerState(this.context.D3DDevice, new SamplerStateDescription()
            {
                Filter = Filter.MinMagMipLinear,
                AddressU = TextureAddressMode.Wrap,
                AddressV = TextureAddressMode.Wrap,
                AddressW = TextureAddressMode.Wrap,
                BorderColor = Color.Black,
                ComparisonFunction = Comparison.Never,
                MaximumAnisotropy = 16,
                MipLodBias = 0,
                MinimumLod = -float.MaxValue,
                MaximumLod = float.MaxValue
            });

            base.OnNavigatedTo(e);
        }
 public SceneRenderer(SharpDXContext context)
 {
     this.parentContext = context;
     this.parentContext.DeviceReset += context_DeviceReset;
 }
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                this.ReleaseResources();

                this.parentContext = null;
            }
        }